补充:C++不能调用成员函数的指针,否则可能会不知道是哪一个对象调用的。
因此类当中的回调函数必须是静态函数,而类的静态函数不能调用对象的方法,因此*pobj就保存对象的地址,使用迂回的方法。
在处理时进行强制类型转换:
- void Class_A::getReceiveData(void *obj, QByteArray *inData){
- Class_A *THIS = (SelectPositionForm *)obj;
- // 此时就把THIS当成this用好了
- ……
至于楼主所说的什么socket的地址,可能有点定势思维了,设计一个线程类,另开一个线程不断执行网络通讯好了,用一个队列保存一系列请求,然后逐个执行,执行完之后“回调”给对象处理。
形象话来说:
- C++说:PHP,帮我处理一下,处理完之后打电话12345给我。
- PHP说:好的,你等等。
- ……PHP处理中……
- ……PHP打电话12345给C++……
- PHP说:C++,我处理好了,把结果发给你。
就是这么个思维,楼主解决难题了,不要忘了请我吃饭。