std::スレッド エラー 質問する

std::スレッド エラー 質問する

クラス内からスレッドを生成しようとしており、スレッドはクラス内の特定のメソッドを実行します。コードは次のようになります。

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()注意:後で実行できるように、作成されたスレッドへの参照が必要であることに注意してください。

おすすめ記事