所以我希望有一个简单的多线程程序,可以通过引用(或作为指针)传递给线程函数。我无法以一种有效的方式做到这一点。我如何正确编码以便编译?
#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对象才能记录和获取数据。这甚至可能吗?怎么办呢?
编辑:我最终需要做的是对类对象进行的任何更改&#39; c&#39;在线程中实际发生在对象的同一个实例中。稍后将详细说明该程序,以运行几个线程,所有线程都访问MyClass对象的一个实例。因此,如果有其他方法可以在不使用引用或指针的情况下执行此操作,或者其他任何方式,请告诉我们!
答案 0 :(得分:1)
您需要将c
声明为
MyClass c;
当你添加parens时,它看起来像一个名为c
的函数的声明,它不带参数并返回一个MyClass
对象;这被称为最令人烦恼的解析。