2016-03-22 11 views
0

私はlibaryを使用していますが、いくつかのメソッド名はsuckだけです。 libのソースに触れずにこれらのメソッド名を安全に変更する方法はありますか?libaryのメソッド名を変更

+0

いいえ、できません。 – DimChtz

+1

パターンについて読む。プロキシのようなものは、お客様の要件 –

答えて

-2

メソッド名はABIレベルの詳細なので、すべてのマシンに対して1つの答えはありません...異なるABIの異なる名前のマングリングスキームとparamエンコーディングスキームなどを使用します。少なくともOS、いくつかのメソッド(binutilsなど)の名前を変更するためのツールがあるかもしれませんが、新しい名前を使用するようにヘッダーを変更する必要があります。

+0

に対して招待されましたが、基本的にはあなたの努力の価値はありません –

1

ああホラー - - あなたがに頼る必要がある場合があります、そこにかかわらず、クラスメソッドのために、この

inline int NiceName(){return HorribleName();} 

doesntの仕事のようにヘッダマクロ

1

本当にクラスのメソッド名を変更したい場合は、できます。単純に元のクラスをサブクラス化し、メソッドのパラメータをメソッドに完全に転送するきれいな名前の新しいメソッドを追加します。変更する名前は醜い名前です。

struct B 
{ 
    // for example 
    int UglyName(std::string str, int i) 
    { std::cout << str << " " << i << std::endl; return i + 1; } 
}; 

struct C : B 
{ 
    template<typename ...Args> 
    auto PrettyName(Args&& ...args) 
    { return UglyName(std::forward<Args>(args)...); } 
}; 

int main() 
{ 
    C c; 
    std::cout << "return value: " << c.PrettyName("Test Message: ", 23) << std::endl; 
    return 0; 
} 
関連する問題