Я пишу программу с mutiplethread с помощью CPP , но у меня есть ошибка компилятора, как это:
мой код может быть представлен следующим образом:
//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()(...)
в вашем классе для вышеупомянутых, чтобы работать.
Других решений пока нет …