을하지 못할 오류 C++ 스레드 설정하는 경우 MainFunction을 사용하여 스레드 만들기표준 : 내가 성공하지 C++로 표준 : : 스레드를 사용하기 위해 노력하고있어 스레드 기능
내가 뭘 잘못하고 어떻게 해결할 수 있습니까? MainThread()
방법은 정적하지 않기 때문에 당신이 this
개체 (당신이 Init()
를 호출하는 객체)에 속하는 방법 언급하는 것을 나타 내기 위해서 필요하므로
을하지 못할 오류 C++ 스레드 설정하는 경우 MainFunction을 사용하여 스레드 만들기표준 : 내가 성공하지 C++로 표준 : : 스레드를 사용하기 위해 노력하고있어 스레드 기능
내가 뭘 잘못하고 어떻게 해결할 수 있습니까? MainThread()
방법은 정적하지 않기 때문에 당신이 this
개체 (당신이 Init()
를 호출하는 객체)에 속하는 방법 언급하는 것을 나타 내기 위해서 필요하므로
, 그것은 다른 개체에 대해 여러 번 존재합니다.
코드에 대한 많은 걱정거리가 있습니다 (구문 오류, 무한 루프 등). 수정 코드가 포함 된 예제 코드는 다음과 같이 표시되어야합니다.
// 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...";
}
}
아직 작동하지 않습니다. 컴파일러는 코드 줄을 좋아하지 않습니다. "this-> currThread = std :: thread (& A :: MainThread);" 오류가 발생했습니다 : 오류 : 클래스 "std :: result_of
보십시오 this-> currThread = std : : 스레드 (& A :: MainThread, this); – alhadhrami
인수로 전달합니다. –
멤버 함수 포인터 등에 대한 정보는 http://stackoverflow.com/questions/10673585/start-thread-with-member-function을 참조하십시오. 또한 확실하게 초기화 함수를 초기화하고 생성자의 초기화리스트에 쓰레드를 생성하는 것이 아닌가? 그리고 MainThread는 실제로 공개되어야합니까? – stijn