クラス内からスレッドを生成しようとしており、スレッドはクラス内の特定のメソッドを実行します。コードは次のようになります。
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)’
ここでの実際のバグが何なのかわかりません。誰か助けてくれませんか?
ありがとう。
ベストアンサー1
問題は、オブジェクトがないとメンバー関数を呼び出せないことです。this
現在のオブジェクトが使用されるようにポインターを提供します。
thread t(&ThreadClass::myThread, this, 10);
任意のオブジェクトのインスタンスを使用することもできますThreadClass
が、あなたの場合はそれがthis
正しい方法のようです。
join()
注意:後で実行できるように、作成されたスレッドへの参照が必要であることに注意してください。