cpp multipleThread:detach非类型错误

时间:2017-03-05 10:22:40

标签: c++ linux multithreading compiler-errors detach

我正在使用 cpp 编写 mutiplethread 程序,但我有一个像这样的编译器错误: error message 我的代码可以显示如下:

    //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();
    }

所以任何人都知道我做错了什么,我该怎么办?

1 个答案:

答案 0 :(得分:2)

std::thread turnCam(ControleCam());

你已经点击了C ++的Most Vexing Parse。上述声明未将turnCam声明为std::thread对象。相反,threadCam被声明为返回std::thread的函数。使用额外的一对括号或使用统一的大括号初始化语法。

std::thread turnCam{ControleCam()};

顺便说一句,您需要在班级中重载operator()(...)以便上述工作。