所以我想有一个简单的多线程程序,该程序可以通过引用(或作为指针)传递给线程函数。我似乎无法以一种可行的方式做到这一点。如何正确编码以便编译?
#include <iostream>
#include <thread>
using namespace std;
class MyClass
{
int x;
public:
MyClass()
{
x = 10;
}
};
void foo(MyClass* c)
{
cout << "This is it" << endl;
}
int main()
{
MyClass c();
thread t1(foo, &c);
t1.join();
return 0;
}
线程函数需要能够访问MyClass对象以便记录和获取数据。这有可能吗?如何才能做到这一点?
编辑:我最终需要发生的事情是对线程中对类对象'c'所做的任何更改实际上都发生在该对象的同一实例中。稍后将详细说明该程序,以运行多个线程来全部访问MyClass对象的一个实例。因此,如果还有另一种方法可以不使用引用或指针或其他方式,请告诉我!
最佳答案
您需要声明c
为
MyClass c;
当您添加括号时,它看起来像一个名为
c
的函数的声明,该函数不带任何参数并返回一个MyClass
对象。这就是最令人讨厌的解析。