2017-03-05 12 views
1

비 클래스 형식 오류를 분리,하지만 난이이 같은 컴파일러 오류 : error message 내 코드는 다음과 같이 제시 될 수있다 :CPP의 multipleThread : 나는 <strong>mutiplethread</strong>이 <strong>CPP</strong>를 사용하여 프로그램을 쓰고 있어요

//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

다음 번에는 오류를 텍스트로 복사하여 이미지가 아닌 여기에 붙여 넣는 것이 좋습니다. – WhiZTiM

+0

OK! 죄송합니다, 그게 더 명확하게 될 것이라고 생각했습니다 – Elsa

답변

2
std::thread turnCam(ControleCam()); 

C++의 Most Vexing Parse에 충돌했습니다. 위의 선언은 turnCamstd::thread 객체로 선언하지 않습니다. 오히려 threadCamstd::thread을 리턴하는 함수로 선언됩니다. 추가 괄호 쌍을 사용하거나 균일 한 중괄호 초기화 구문을 사용하십시오.

std::thread turnCam{ControleCam()}; 

BTW, 당신은 위의 작업을 위해이 클래스에 operator()(...) 과부하가 필요합니다.

+0

답해 주셔서 감사합니다 !! "turnCam {ControleCam()}"으로 변경했습니다. 작동합니다! – Elsa

+0

A.cpp에 연산자()가 있습니다. 잘못 입력 한 부분이 아닌 것 같아요.) – Elsa

+0

@Elsa, 아무 문제 없습니다! 그것은 당신이 한 좋은 일이었습니다. 방금 그 경우에 대비하여 그 라인을 추가했습니다. 글쎄, 네 문제가 해결되어 기쁩니다. 문안 인사! :-) – WhiZTiM