C/C++技巧 公用体函数指针
2023-06-06
5
0
使用公用体函数存储函数的类型,使用一个枚举来传递函数的类型。这样结合for case等语法,可以巧妙地进行底层封装。
例如MFC的消息响应就是这样的,只是多了一个宏而已。
union FUN
{
Void (*pFun)();
Void (*pFun2)(int );
bool(*pFun3)(int );
};
enum FUNTYPE
{
vv = 0,
vi ,
bi
};
typedef struct _PROCESS
{
FUNTYPE type;
FUN pFun;
} PROCESS;
PROCESS process[] =
{
{vi,(FUN)fun},
{vf, ,(FUN)fun1},
{vi, ,(FUN)fun2},
...
};
For(int i=0,int Num=sizeof(process)/sizeof(process[0]);
i<Num;i++)
{
switch(process[i].type)
{
case vv:
process[i]. pFun();
break;
case vi:
process[i]. pFun2(3);
break;
...
}
}