如何将对象作为引用或指针传递给线程函数?

时间:2015-11-05 01:01:55

标签: c++ multithreading

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

#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对象的一个​​实例。因此,如果有其他方法可以在不使用引用或指针的情况下执行此操作,或者其他任何方式,请告诉我们!

1 个答案:

答案 0 :(得分:1)

您需要将c声明为

MyClass c;

当你添加parens时,它看起来像一个名为c的函数的声明,它不带参数并返回一个MyClass对象;这被称为最令人烦恼的解析。