这个问题已经在这里有了答案:




已关闭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/

10-15 06:21