これは私を困惑させただけなので、私はここで質問すると思いました:
私は次のようなクラスを持っています:
class MyClass {
public:
void myThreadFunc();
};
それはヘッダーにあります。コンストラクター内
MyClass::MyClass() {
...
boost::thread t(boost::bind(&MyClass::myThreadFunc, this));
...
}
私がやったように。コンパイル時のエラーはありません。ただし、次のようにリンクすると、次のようになります。
g++ -o test.exe main.o MyClass.o /*specify boost and other libraries */
私は得る:
MyClass.o:MyClass.cpp:(.text+0xa4): undefined reference to `MyClass::myThreadFunc()'
collect2: ld returned 1 exit status
これは意味がありません。私が特に奇妙に思うのは、それがリンカーエラーだということです。両方のオブジェクトファイルを含めました。
誰かが何が起こっているのか教えてもらえますか?関連性がある場合は、WindowsのMinGWを使用しています。
編集:
エピックは失敗します。cppファイルで関数を定義するときにMyClass::プレフィックスを忘れました。私はそれをチェックすることに決めませんでした。クラス定義の後にセミコリンを忘れるのとほぼ同じくらい悪いです。