需要将要在std::thread中调用的函数定义为一个静态成员函数,然后再通过该静态成员函数来间接调用类中的函数。
以下是示例代码:
#include
#include
class MyClass {
public:
void print() {
std::cout << "Hello, world!" << std::endl;
}
static void thread_func(MyClass* obj) {
obj->print();
}
void thread_run() {
std::thread t(&MyClass::thread_func, this);
t.join();
}
};
int main() {
MyClass obj;
obj.thread_run();
return 0;
}
在MyClass中,我们定义了print()函数来打印一条简单的消息。为了在std::thread中调用它,我们创建了一个静态成员函数thread_func(),该函数接受一个指向MyClass对象的指针作为参数,并通过该指针来调用print()函数。
然后,在thread_run()中,我们创建并启动一个std::thread,它将调用thread_func(),并向其传递指向当前对象的指针(this)。最后,我们等待线程完成并退出。