2015-11-05 33 views
0

所以我想要一个简单的多线程程序,可以通过引用(或作为指针)传递给线程函数。我似乎无法以有效的方式去做。我将如何正确编码它以便编译?如何将对象作为引用或指针传递给线程函数?

#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对象的一个​​实例。所以,如果有另一种方法来做到这一点,而不使用引用或指针,或者别的什么,请让我知道!

回答

1

需要声明c作为

MyClass c; 

当您添加它看起来像一个功能叫做c的声明,不带任何参数,并返回一个MyClass对象的括号;这被称为最苦恼的解析。

+0

谢谢,这解决了我遇到的问题! –

相关问题