我正在使用 cpp mutiplethread 编写程序,但是我有这样的编译器错误:

我的代码可以如下所示:

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

那么有人知道我做错了什么,我该怎么办?

最佳答案

std::thread turnCam(ControleCam());

您已经按了C++的Most Vexing Parse。上面的声明没有将turnCam声明为std::thread对象。相反,threadCam被声明为返回std::thread的函数。使用额外的一对括号或统一的花括号初始化语法。
std::thread turnCam{ControleCam()};

顺便说一句,您需要在您的类中有一个重载的operator()(...),以上内容才能起作用。

09-08 06:24