<分区>
为什么定义:
void aClass::start(){
void *ptr = this->startService;
thread serviceth(ptr,this);
}
ISO 禁止吗? 即使我:
void aClass::start(){
thread serviceth(startService,this);
}
我收到一个错误:“没有匹配的调用函数”。
<分区>
为什么定义:
void aClass::start(){
void *ptr = this->startService;
thread serviceth(ptr,this);
}
ISO 禁止吗? 即使我:
void aClass::start(){
thread serviceth(startService,this);
}
我收到一个错误:“没有匹配的调用函数”。
最佳答案
您需要为 std::thread
提供函数指针,例如
void aClass::start(){
thread serviceth(&aClass::startService, this);
}
为了创建线程。但是,我们遇到了另一个问题。创建线程后,函数立即结束并销毁线程。由于线程处于可连接状态(join()
或 detach()
从未被调用),线程的析构函数将抛出异常。
您可以使 serviceth
成为 aClass
的成员,以便线程可以在该类存在时运行。
关于c++ - ISO禁止启动自己类方法的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482577/