我遇到了一些看起来像
的代码myClass.h:
class MyClass
{
...
private:
typedef int (MyClass::*myFunc_t)(void);
}
将typedef中的MyClass::
包含在此处做什么或者是多余的?
答案 0 :(得分:1)
是的,它确实做了一些事情:它指定类型是指向成员函数的指针。没有它,它将是指向非成员(或静态成员)函数的指针。
说明不同之处:
struct MyClass
{
int mem_fun(); // member function
};
int non_mem_fun(); // non-member function
typedef int (MyClass::*mem_fun_ptr)(); // pointer to member
typedef int (*non_mem_fun_ptr)(); // pointer to non-member
MyClass object;
mem_fun_ptr mfp = &MyClass::mem_fun; // points to a member function
(object.*mfp)(); // needs an object to call the function
non_mem_fun_ptr mnfp = non_mem_fun; // points to a non-member function
nmfp(); // called without an object