boost::thread コールバックを使用していくつかのオブジェクト関数を実行しようとしていました
クラス A には、次のような関数があります。
void DoWork(int (*callback)(float))
{
float variable = 0.0f;
boost::this_thread::sleep(boost::posix_time::seconds(1));
int result = f(variable);
}
メインで:
int SomeCallback(float variable)
{
int result;
cout<<"Callback called"<<endl;
//Interpret variable
return result;
}
int main(){
A* file = new A();
boost::thread bt(&A::DoWork, file , &SomeCallback );
cout<<"Asyns func called"<<endl;
bt.join();
cout<<"main done"<<endl;
}
この行はリンカエラーboost::thread bt(&A::DoWork, file , &SomeCallback );
を引き起こします。このチュートリアルから取ったこの呼び出し:
http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html。
エラーは次のとおりです。
unresolved external symbol "public: void __thiscall A::DoWork(int (__cdecl*)(float))" (?DoWork@A@@QAEXP6AHM@Z@Z) referenced in function _main
このコードの何が問題になっていますか?