我正在编写一个非常简单的c ++程序。
#include<iostream>
#include<thread>
class Fortest{
private:
int x;
public:
Fortest(int a)
{
x=a;
}
void run(void)
{
cout<<"test sucesses!"<<endl;
}
};
int main()
{
Fortest hai(1);
std::thread t;
t=std::thread(std::ref(hai),&Fortest::run());
t.join();
cout<<"program ends"<<endl;
return 0;
}
而且,我不断收到错误消息:“没有对象就无法调用成员函数”。谁能帮我解决这个问题?
最佳答案
您有两个问题:
首先是调用线程函数,将指针传递给它返回的值。您应该将指针传递给该函数。
第二个问题是您以错误的顺序传递了std::thread
constructor参数。指向函数的指针是第一个参数,调用它的对象是第二个参数(这是函数的第一个参数)。
即它应该像
t = std::thread(&Fortest::run, &hai);
关于c++ - 错误:在没有对象的情况下无法调用成员函数'void Fortest::run()',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46709425/