現在、C/C++ を使用してソケット プログラミングを行っています。ややクリーンなインターフェイスと、よりオブジェクト指向の構造を使用できるようにするために、C ソケット API の一部の周りにいくつかの単純なラッパー クラスを作成することにしましたが、そうしているうちに問題に遭遇しました。
次のコードがあるとします。
// Global method
int foo(int x)
{
return x;
}
// Class that calls the global method
class FooBar
{
public:
void foo() { return; };
void baz() { foo(1); }
};
g++ は次のエラー メッセージを表示します。
test.cpp: In member function ‘void FooBar::baz()’:
test.cpp:10: error: no matching function for call to ‘FooBar::foo(int)’
test.cpp:9: note: candidates are: void FooBar::foo()
クラスメソッドの名前を変更すると、問題が解決します。
メソッドのシグネチャが異なるにもかかわらず、何らかの名前の競合が発生するのはなぜですか? これを修正する最善の方法は何ですか?
ありがとう/エリック