cpp multipThread: отсоединить ошибку не-классового типа

Я пишу программу с 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();
}

Так что кто-нибудь знает, где я сделал неправильно и что я могу сделать?

1

Решение

std::thread turnCam(ControleCam());

Вы попали в C ++ Most Vexing Parse. Приведенная выше декларация не объявляет turnCam как std::thread объект. Скорее threadCam объявлен как функция, которая возвращает std::thread, Используйте дополнительную пару скобок или используйте единый синтаксис инициализации фигурной скобки.

std::thread turnCam{ControleCam()};

Кстати, вам нужно будет перегружен operator()(...) в вашем классе для вышеупомянутых, чтобы работать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]