20

重複の可能性:
メンバー関数でスレッドを開始する

私は最近、c++ 11 で新しい std::thread ライブラリをいじっていて、問題に遭遇しました。クラス関数を新しいスレッドに渡そうとすると、エラーが発生します(家から離れているため、正確なエラーテキストは今のところありません)私はこのようなクラスを持っていました

class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(FunctA);
        std::thread r(FunctB);
    }
}

私は何を間違っていますか?

4

2 に答える 2

35
class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(&A::FunctA, this);
        std::thread r(&A::FunctB, this);
    }
};

メンバー関数へのポインターは関数へのポインターとは異なり、それらを呼び出す構文も異なり、クラスのインスタンスが必要です。コンストラクターの 2 番目の引数として、インスタンスへのポインターを渡すだけですstd::thread

于 2012-06-15T20:36:18.233 に答える
0

問題は、関数と同様の方法でメンバー関数へのポインターを取得できないことだと思います。ここでは、これに関する詳細情報を見つけることができます。

また、コンパイラのエラー テキストを提供すると、回答がはるかに簡単になります。

于 2012-06-15T20:34:44.560 に答える