2017-03-05 7 views
1

私はCPPを使用してmutiplethreadでプログラムを書いているが、私はこのようなコンパイラエラーを持っている: error message 私のコードは次のように提示することができますCPP multipleThread:非クラス型のエラーを切り離し

//A.hpp 
    class ControleCam{ 
    public: 
    ControleCam(); 
    ~ControleCam(); 
    }; 

    //A.cpp 
    #include "A.hpp" 
    ControleCam::ControleCam(){ 
    ... 
    } 
    ControleCam::~ControleCam(){ 
    ... 
    } 
    //B.cpp 
    #include <A.hpp> 
    int main(){ 
    std::thread turnCam(ControleCam()); 
    turnCam.detach(); 
    } 

誰かが私が間違っていた箇所や私は何ができますかについての手がかりを持っていますか?

+0

次回は、エラーをテキストとしてコピーし、画像ではなくここに貼り付けることをお勧めします。 – WhiZTiM

+0

OK!申し訳ありませんが、私はそれがより明確になると思った – Elsa

答えて

2
std::thread turnCam(ControleCam()); 

C++のMost Vexing Parseにヒットしました。上記の宣言では、turnCamstd::threadオブジェクトとして宣言していません。むしろthreadCamは、std::threadを返す関数として宣言されています。追加の括弧のペアを使用するか、またはブレースの初期化構文を使用します。

std::thread turnCam{ControleCam()}; 

ところで、あなたは仕事に上記のためにあなたのクラスのオーバーロードさoperator()(...)を持っている必要があります。

+0

あなたの答えをありがとう!私はそれを "turnCam {ControleCam()}"に変更しました。 – Elsa

+0

私はA.cppに演算子()を持っていますが、私はそれが間違っている部分ではないと思うのです。) – Elsa

+0

@Elsa、問題ありません!それはあなたがした良いことでした。私はちょうどその場合に備えて、それをカバーするためにその行を追加しました。まあ、あなたの問題が解決してうれしいです。よろしく! :-) – WhiZTiM

関連する問題