类方法上的“必须调用对非静态成员函数的引用”

时间:2018-07-23 11:41:56

标签: c++

我正在学习c ++,并且遇到了一个奇怪的错误(请参见标题)。在类实例内部,我试图从该类中调用另一个函数,同时将其添加到线程向量中。这是我的示例代码:

文件:header.h

class MyClass{
    void threaded_func();
    bool main_func();
};

文件:main.cpp

#include <thread>
#include <vector>
#include "header.h"

using namespace std;

vector<thread> threads;

void MyClass::threaded_func()
{
    cout << "I'm threaded_func\n";
}

bool MyClass::main_func()
{
    vector<thread> threads;
    threads.push_back(thread(threaded_func));

    return true;
}

int main()
{
    MyClass mc;
    return 0;
}

这将向我返回错误reference to non-static member function must be called。我已经检查过this问题,但是对我没有帮助(用thread(threaded_func)代替thread(MyClass::*threaded_func))。我还尝试使用this关键字来告诉编译器我正在使用相同的类成员来调用方法,但是似乎我的C ++知识太低了,无法解决此问题。

有没有解决方法?我也浏览了this问题,但这是关于变量而不是函数的问题。

0 个答案:

没有答案