I'm writing a program with mutiplethread using cpp , but I have a compiler-error like this: my code could be presented as follow:
//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();
}
So anybody have a clue about where I did wrong and what can I do?
std::thread turnCam(ControleCam());
You've hit C++'s Most Vexing Parse. The above declaration doesn't declare a turnCam
as a std::thread
object. Rather threadCam
is declared as a function that returns a std::thread
. Use an extra pair of parenthesis or use uniform brace initialization syntax.
std::thread turnCam{ControleCam()};
BTW, you will need to have an overloaded operator()(...)
in your class for the above to work.