所以我想有一个简单的多线程程序,该程序可以通过引用(或作为指针)传递给线程函数。我似乎无法以一种可行的方式做到这一点。如何正确编码以便编译?

#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对象。这就是最令人讨厌的解析。

08-04 14:40