正文

关于OF中的函数指针2008-10-29 17:36:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bioexplore/39142.html

分享到:

#define declareMemberFunctionSelectionTable\
(returnType,baseType,memberFunction,argNames,argList,parList)                 \
                                                                              \
    /* Construct from argList function pointer type */                        \
    typedef  returnType (*memberFunction##argNames##MemberFunctionPtr)argList; \
                                                                              \
    /* Construct from argList function table type */                          \
    typedef HashTable                                                         \
        <memberFunction##argNames##MemberFunctionPtr, word, string::hash>     \
        memberFunction##argNames##MemberFunctionTable;                        \
                                                                              \
    /* Construct from argList function pointer table pointer */               \
    static memberFunction##argNames##MemberFunctionTable*                     \
        memberFunction##argNames##MemberFunctionTablePtr_;                    \
                                                                              \
以上代码摘自OF的memberFunctionSelectionTable.H文件,这里定义了一个宏:
declareMemberFunctionSelectionTable
该宏用来定义一些列的类型别名及静态变量,同时还声明了一个类(代码未列出)。这里的memberFunction##argNames##MemberFunctionPtr就是一个函数指针,该指针指向一个函数该函数的返回值由宏参数returnType指明,函数的参数列表由宏参数argList指明。

接下来的代码中定义了一个HashTable的别名memberFunction##argNames##MemberFunctionTable,该HashTabel中存储的主要是memberFunction##argNames##MemberFunctionPtr,也就是一系列的函数指针,后续声明的类实现对该HashTable的构造,类的成员函数可以通过该HashTable找到特定名称的成员函数(之前保存的memberFunction##argNames##MemberFunctionPtr)这样就可以执行这些成员函数了,这些成员函数的名字一般由宏参数memberFunction指出。

阅读(3292) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册