我收到此错误:错误 c2064:term 的计算结果不是采用 0 个参数的函数,但我不明白为什么



我遇到了此错误:错误 c2064:term 的计算结果不是采用 0 个参数的函数。问题是该函数需要 0 个参数,我调用 0 个参数,我不明白出了什么问题。

    RWLock* rwl = new RWLock();
    std::thread t1(&RWLock::read);

这就是对函数的调用。这是函数:

    void read();

有人知道问题出在哪里吗?提前感谢!

所有非静态成员函数都有一个隐藏参数,该参数将成为成员函数中的this指针 如果要将非静态成员函数用作线程,则必须在启动线程时提供此隐藏参数:

std::thread t1(&RWLock::read, rwl);
我很

确定,read()不是一个静态函数。也就是说,您将其声明为:

void read()

而不是:

static void read()

非静态成员函数始终接受一个附加参数 - 隐式this指针。read()静态,它应该可以工作。

如果read()不能是静态的,则将一个额外的参数传递给std::thread - 一个指向对象的指针,read()将处理该参数。在这种情况下,应该rwl

RWLock* rwl = new RWLock();
std::thread t1(&RWLock::read, rwl);

最新更新