我假设这个问题很简单。我想首先将一个线程定义为一个类的成员变量,然后在另一个函数中启动该线程。
例如:
标题文件:
#include<thread>
class Foo{
public:
void threaded_method();
void start_thread();
private:
std::thread m_thread;
};
Cpp文件:
void Foo::start_thread(){
m_thread = std::thread(threaded_method);
}
虽然以上不起作用,但想法?
答案 0 :(得分:6)
要将成员函数传递给线程,还必须传递要执行该函数的实例。
void Foo::start_thread(){
m_thread = std::thread(&Foo::threaded_method, this);
}
答案 1 :(得分:0)
在这些页面中找到了一个很好的例子:
我忘了传递对成员函数的有效引用。
void Foo::start_thread(){
m_thread = std::thread(&Foo::threaded_method, this);
}
应该有效。在发布问题后,我很乐意找到答案...
答案 2 :(得分:0)
您也可以简单地更改您的架构。例如,有一个列表,其中包含您要执行的功能。然后多线程浏览您想要运行的所有函数。