클래스의 ctor에 std :: thread를 초기화해야합니다. 스레드는 클래스 자체의 멤버 함수를 실행해야합니다. ctor에서 스레드를 초기화하려고 할 때 프로그램은 구성원 함수를 실행하려고 시도합니다. (이동 의미가 구현됩니다).이동 가능한 클래스의 ctor에서 std :: thread 초기화하기
Page::Page(Motion *_parent):
parent(_parent)
{
std::thread x(&Page::play,this);
starter = std::move(x);
}
프로그램은 this
의 play()
실행! 이 일을 표준 방법 인 경우에 나는, 지금은 std::bind
을 가지고 노는거야 ...
void Page::start()
{
std::thread x(&Page::play,this);
x.join();
}
를 그리고 잘 작동하지만 괜찮아요 아닌지 모르겠어요
편집 : 나는이 작업을 수행 코드를 바꿀거야. 이런 일에 대해 어떻게
질문이 없습니다. – kukyakya
@kukyakya : 문제는 ctor의 첫 번째 줄에 있으며 프로그램은'this-> play()'를 실행합니다. –
@ Joachim : 나는 그것을 이해할 수 없다 ... –