スレッドを使用してメンバー関数のいくつかを呼び出そうとしています。これを持っているとします
class myclass
{
public:
myclass();
double function1();
void function2();
};
myclass::myclass()
{}
double myclass::function1()
{
...
return a double;
}
void myclass::function2()
{
//use a thread to call function 1
std::thread t(function1);//doesnt work!-wont compile
std::thread t2(myclass::function1);//doesnt work either -wont compile
std::thread t3(&myclass::function1);//doesnt work here either - wont compile
}
C++で別のメンバー関数内のスレッドでメンバー関数を呼び出すにはどうすればよいですか? ちなみに、Visual Studio 2013 Preview を使用しています。
更新 2:
言われたとおりに実行しましたが、コードの一部のセクションは正常にコンパイルされ、一部のセクションはそうではありません!
これは、エラーを生成する新しいサンプル コードです。
class xGramManipulator
{
public:
xGramManipulator();
void ReadMonoGram();
void ReadBiGram();
void ReadMonoGram(double &);
void ReadBiGram(double &);
void CreateMonoGramAsync();
void CreateBiGramAsync();
};
xGramManipulator::xGramManipulator()
{
}
void xGramManipulator::CreateMonoGramAsync()
{
thread t(&xGramManipulator::ReadMonoGram, this);
}
void xGramManipulator::CreateBiGramAsync()
{
thread t = thread(&xGramManipulator::ReadBiGram, this);
}
上記のコード (これら 2 つの Async メンバー関数) は、次のエラーを生成します:
エラー メッセージ:
エラー C2661: 'std::thread::thread': 2 つの引数を取るオーバーロードされた関数はありません