2017-01-12 6 views
0

을하지 못할 오류 C++ 스레드 설정하는 경우 MainFunction을 사용하여 스레드 만들기표준 : 내가 성공하지 C++로 표준 : : 스레드를 사용하기 위해 노력하고있어 스레드 기능

내가 뭘 잘못하고 어떻게 해결할 수 있습니까? MainThread() 방법은 정적하지 않기 때문에 당신이 this 개체 (당신이 Init()를 호출하는 객체)에 속하는 방법 언급하는 것을 나타 내기 위해서 필요하므로

+0

인수로 전달합니다. –

+0

멤버 함수 포인터 등에 대한 정보는 http://stackoverflow.com/questions/10673585/start-thread-with-member-function을 참조하십시오. 또한 확실하게 초기화 함수를 초기화하고 생성자의 초기화리스트에 쓰레드를 생성하는 것이 아닌가? 그리고 MainThread는 실제로 공개되어야합니까? – stijn

답변

0

, 그것은 다른 개체에 대해 여러 번 존재합니다.

코드에 대한 많은 걱정거리가 있습니다 (구문 오류, 무한 루프 등). 수정 코드가 포함 된 예제 코드는 다음과 같이 표시되어야합니다.

// A.hpp 
#ifndef A_HPP 
#define A_HPP 

#include <thread> 

class A 
{ 
    public: 
     void Init(); 
     void MainThread(); 

    private: 
     std::thread currThread; 
}; 

#endif // A_HPP 

// A.cpp 
#include <iostream> 
#include <thread> 
#include "A.h" 

void A::Init() 
{ 
    this->currThread = std::thread(&A::MainThread, this); 
} 

void A::MainThread() 
{ 
    //this loop will run forever 
    while (true) 
    { 
     std::cout << "Just For Example..."; 
    } 
} 
+0

아직 작동하지 않습니다. 컴파일러는 코드 줄을 좋아하지 않습니다. "this-> currThread = std :: thread (& A :: MainThread);" 오류가 발생했습니다 : 오류 : 클래스 "std :: result_of ()>"구성원이 없습니다 "형식" –

+0

보십시오 this-> currThread = std : : 스레드 (& A :: MainThread, this); – alhadhrami