1 #include <iostream> 2 using namespace std; 3 4 typedef int int32_t; 5 6 struct IMsgBody{ 7 int body; 8 }; 9 10 struct Arg{ 11 int arg; 12 }; 13 14 class A; 15 16 typedef int32_t (A::*GetArg_Fun)(IMsgBody *pMsgBody, Arg *stArg); //函数指针 17 18 class A 19 { 20 public: 21 A(){} 22 ~A(){} 23 int32_t GetArg_GameEnd(IMsgBody *pMsgBody,Arg *stArg); 24 int32_t GetTaskArg(IMsgBody *pMsgBody,Arg *stArg,GetArg_Fun getArg_Fun); 25 int32_t GetTaskArg(IMsgBody *pMsgBody,Arg *stArg); 26 }; 27 28 int32_t main() 29 { 30 IMsgBody msgBody; 31 Arg arg; 32 msgBody.body = 78; 33 arg.arg = 45; 34 A a; 35 a.GetTaskArg(&msgBody,&arg); 36 return 0; 37 } 38 39 int32_t A::GetArg_GameEnd(IMsgBody *pMsgBody,Arg *stArg) 40 { 41 cout<<"pMsgBody:"<<pMsgBody->body<<endl; 42 cout<<"Arg:"<<stArg->arg<<endl; 43 return 123; 44 } 45 46 int32_t A::GetTaskArg(IMsgBody *pMsgBody,Arg *stArg,GetArg_Fun getArg_Fun) 47 { 48 int ret = 0; 49 ret = (this->*getArg_Fun)(pMsgBody,stArg); 50 cout<<"ret = "<<ret<<endl; 51 return 0; 52 } 53 54 int32_t A::GetTaskArg(IMsgBody *pMsgBody,Arg *stArg) 55 { 56 GetTaskArg(pMsgBody,stArg,&A::GetArg_GameEnd); 57 return 0; 58 }
时间: 2024-10-29 19:06:36