C/C++技巧 公用体函数指针

使用公用体函数存储函数的类型,使用一个枚举来传递函数的类型。这样结合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;
        ...
    }
}
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!