//在通信中可能经常会用到消息ID,处理不同的消息ID找去找对应的处理函数,我写了一个小例子,处理消息分发。 直接上代码啦 //头文件h #include "stdafx.h" #include "iostream" using namespace std; #define MSG_FUN void (MsgDis::*test)(int) #define MSG_RUN (this->*test) #define FUN_NAME_ &MsgDis:: class MsgDis{ public: void MsgDisp(int para); void MsgDisp_2(int para); void MsgDisp_3(int para); void runMsgFunction(int msgCode){ switch(msgCode){ case 1: {//不加这个括号就会出错 MSG_FUN = &MsgDis::MsgDisp; MSG_RUN(10); break; }//不加这个括号就会出错 case 2: { MSG_FUN = &MsgDis::MsgDisp_2; MSG_RUN(20); break; } case 3: { MSG_FUN = &MsgDis::MsgDisp_3; MSG_RUN(30); break; } default: { cout<<"No function for you"<<endl; break; } } } }; //实现文件cpp #include "stdafx.h" #include "MsgDispatch.h" #include "iostream" using namespace std; void MsgDis::MsgDisp(int para) { cout<<"hi boy ..this is MsgDisp, param is :/t"<<para<<endl; } void MsgDis::MsgDisp_2(int para) { cout<<"hi boy ..this is MsgDisp___2, param is :/t"<<para<<endl; } void MsgDis::MsgDisp_3(int para) { cout<<"hi boy ..this is MsgDisp___3, param is :/t"<<para<<endl; } //测试文件 // CPlusPlus.cpp : 定义控制台应用程序的入口点。 // #pragma once #include "stdafx.h" #include "iostream" #include <assert.h> #include "MsgDispatch.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { MsgDis *msgDis = new MsgDis; msgDis->runMsgFunction(1);//根据消息ID找到对应的解析方法 msgDis->runMsgFunction(2); msgDis->runMsgFunction(3); msgDis->runMsgFunction(4); getchar(); return 0; } 参考了下这个:M$的文档