我正在使用 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()(...)
,以上内容才能起作用。