当前位置: 代码迷 >> QT开发 >> Qt中的类成员函数指针 能否作为C函数的函数参数进行传递?解决思路
  详细解决方案

Qt中的类成员函数指针 能否作为C函数的函数参数进行传递?解决思路

热度:51   发布时间:2016-04-25 04:44:47.0
Qt中的类成员函数指针 能否作为C函数的函数参数进行传递?
项目用QT/C++开发上层GUI,用C开发功能库。

C的功能库需要和上层GUI通信。

请问下面的想法能否实现:
将上层GUI的类实例的成员函数,作为C的函数参数传递给功能库,当作回调函数使用。


------解决方案--------------------
当然可以, 只是这时要注意到线程安全的问题~``
如果在不同的线程, 最好通过将信号作为函数参数比较合适 :)
------解决方案--------------------
直接用是不行的
可以将类的成员函数声明为静态成员函数
或者写个wrapper类

------解决方案--------------------
类的成员指针和一般的指针还是有区别的。

全部用函数包装一下吧。

Class AAA {
public:
int BBB(int v)
};

typedef void* MyHandle;

extern "c" {
int AAA_BBB(MyHandle a, int v);
}

int AAA_BBB(MyHandle a, int v) {
AAA* in_a = (AAA*)a;
return in_a->BBB(v);
}
------解决方案--------------------
尽量少用静态函数, 将成员函数封装起来通过组合方式会比较灵活~··
------解决方案--------------------
库和界面是可以分开的
  相关解决方案