20

可能重复:
使用成员函数启动线程

我最近一直在玩 c++11 中的新 std::thread 库,但遇到了一个问题。当我尝试将一个类函数传递给一个新线程时,它给了我一个错误(我现在没有确切的错误文本,因为我不在家)我有一个像这样的类

class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(FunctA);
        std::thread r(FunctB);
    }
}

我究竟做错了什么?

4

2 回答 2

35
class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(&A::FunctA, this);
        std::thread r(&A::FunctB, this);
    }
};

指向成员函数的指针与指向函数的指针不同,调用它们的语法也不同,并且需要类的实例。您可以将指向实例的指针作为std::thread构造函数的第二个参数传递。

于 2012-06-15T20:36:18.233 回答
0

我认为,问题在于您无法以类似于函数的方式获取指向成员函数的指针。在这里,您将找到有关此的更多信息。

此外,如果您提供编译器错误文本,回答起来会容易得多。

于 2012-06-15T20:34:44.560 回答