关于静态成员函数中调用非静态成员函数问题
问题原型:我总共两个类:CIPCOM\CView
CView类中有类数组 :CArray<CComIP, CComIP&> IPArray;
CIPCOM类中有静态成员函数:static UINT ReceiveUDP(LPVOID p);
有非静态成员函数:unsigned int getIPType();
因为CIPCOM类中的静态成员函数ReceiveUDP(LPVOID p)需要启动UDP通信线程,所以形参不能随意变动,无法将确切的实例通过参数传递进来,而该静态函数中又需要调用非静态成员函数getIPType(),此时需要如何获取活动的实例?
代码结构
程序代码:
//CView类 for(int i=0;i<IPArray.GetSize();i++) { IPArray.IP_Init(); } //CIPCOM类 void CIPCOM::IP_Init() { //创建套接字部分 //绑定套接字部分 //启动数据接收线程 AfxBeginThread(ReceiveUDP, this, THREAD_PRIORITY_NORMAL, 0, 0, NULL); } UINT CIPCOM::ReceiveUDP() { if (JSJ_COM == getIPType()) //JSJ_COM-为宏定义----此处调用非静态成员函数,是我的疑惑之处:我要怎么能够获取到当前所活动的类实例 { //数据接收解析逻辑 } } unsigned int CIPCOM::getIPType() //按照软件功能及相关设计,此处我不愿意定义为静态成员 { return IP_TYPE; }
[此贴子已经被作者于2020-2-28 20:51编辑过]