比如,有一个程序要从串口接收数据然后驱动openGL中的模型:主程序中负责opengl的显示,定义了一个单独的线程类去接收数据。 我定义了一个class data类来保存数据。
如果在主程序中声明data对象, 那怎么去把这个对象传递给线程对象呢?
这个程序应该怎么组织呢?
C++中如何c++中怎么把一个对象的引用,传递到另一个对象中进行操作?
答案:2 悬赏:20 手机版
解决时间 2021-03-15 07:38
- 提问者网友:我没有何以琛的痴心不悔
- 2021-03-14 13:10
最佳答案
- 五星知识达人网友:西风乍起
- 2021-03-14 14:48
在C++中:
1、定义分为全局定义和局部定义,如果你打算让class data类能在“单独的线程类”中使用,那就要使用全局定义。
2、定义只是在程序中约定某个东西是什么个样式,就类似一个设计图,以告诉计算机这个东西的结构是怎么样的。定义完成并不是指这个对象、结构、变量就生成并存在。
3、一个类,要让它在程序中存在,需要事先定义,然后通知计算机生成,在C++中用的就是new指令。
4、如果你想让多个线程能公共地影响某个类对象,最常用的做法就是让这个类的定义在全局,并在各线程使用它之前保证它安全地生成了。比如在程序主进程起动时,或主窗体生成后就用new指令生成它。
5、对于“怎么去把这个对象传递给线程对象”,全局定义的类,直接调用即可。类里面定义的public里的变量,可以直接被引用和操作。
1、定义分为全局定义和局部定义,如果你打算让class data类能在“单独的线程类”中使用,那就要使用全局定义。
2、定义只是在程序中约定某个东西是什么个样式,就类似一个设计图,以告诉计算机这个东西的结构是怎么样的。定义完成并不是指这个对象、结构、变量就生成并存在。
3、一个类,要让它在程序中存在,需要事先定义,然后通知计算机生成,在C++中用的就是new指令。
4、如果你想让多个线程能公共地影响某个类对象,最常用的做法就是让这个类的定义在全局,并在各线程使用它之前保证它安全地生成了。比如在程序主进程起动时,或主窗体生成后就用new指令生成它。
5、对于“怎么去把这个对象传递给线程对象”,全局定义的类,直接调用即可。类里面定义的public里的变量,可以直接被引用和操作。
全部回答
- 1楼网友:污到你湿
- 2021-03-14 15:40
1、成员函数指针还需要类实例对象来参与调用,而不是仅仅一个函数指针就可以调用。因此成员函数指针和全局函数指针是不兼容的:
typedef void (t::*b)(int x, int y, int z);
b b = &t::foo;
t t;
t.*b(x, y, z); // 必须指定t
2、通过context传入到你最终的回调函数里面。
void fun(a a, b b, c c, void* context)
{
t* t = reinterpret_cast(context);
t->*b(x, y, z);
}
t t;
b b = &t::foo;
fun(a, b, c, &t);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯