我正在使用 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();
}
所以任何人都知道我做错了什么,我该怎么办?
答案 0 :(得分:2)
std::thread turnCam(ControleCam());
你已经点击了C ++的Most Vexing Parse。上述声明未将turnCam
声明为std::thread
对象。相反,threadCam
被声明为返回std::thread
的函数。使用额外的一对括号或使用统一的大括号初始化语法。
std::thread turnCam{ControleCam()};
顺便说一句,您需要在班级中重载operator()(...)
以便上述工作。