クラス内からスレッドを生成しようとしていますが、スレッドはクラス内の特定のメソッドを実行します。コードは次のようになります。
class ThreadClass{
int myThread(int arg){
// do something
}
void createThread(){
thread t = thread(myThread,10);
}
} ;
コンパイル時のこのコードは、次のようなエラーをスローします
std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = int (ThreadClass::*)(int), _Args = {int}]
no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘int (ThreadClass::*&&)(int)’
ここで実際のバグが何であるかわかりません。誰かがこれを手伝ってくれる?
ありがとう。
問題は、オブジェクトなしではメンバー関数を呼び出せないことです。現在のオブジェクトが使用されるように、this
へのポインタを指定します。
_thread t(&ThreadClass::myThread, this, 10);
_
任意のThreadClass
オブジェクトのインスタンスを使用できますが、あなたの場合、this
が正しいことのようです。
注:後でjoin()
を実行できるように、作成されたスレッドへの参照が必要であることを忘れないでください。