我正在学习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问题,但这是关于变量而不是函数的问题。