这个问题已经在这里有了答案:
已关闭8年。
我是C++的新手。我的经验主要是使用javascript和Java。
我在Lion上使用Xcode。以下代码为我提供了一个编译错误:“必须调用对非静态成员函数的引用;您的意思是不带任何参数调用它吗?”
class MyClass {
private:
void handler() {
}
public:
void handleThings() {
std::thread myThread(handler);
}
};
我还尝试了
this->handler
,&handler
和其他变体,但没有一个起作用。这段代码可以编译并完成我想要的工作:class MyClass {
private:
void handler() {
}
public:
void handleThings() {
std::thread myThread([this]() {
handler();
});
}
};
为什么不能传递对成员函数的引用?我的变通办法是最好的解决方案吗?
最佳答案
std::thread myThread(&MyClass::handler, this);
myThread.join();
关于c++ - 如何将实例成员函数作为回调传递给std::thread,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14453329/