classdef里面的类名称空间在同一个类中?

时间:2014-08-25 13:06:16

标签: c++ typedef

我遇到了一些看起来像

的代码

myClass.h:

class MyClass
{
...
private:
    typedef     int (MyClass::*myFunc_t)(void);
}

将typedef中的MyClass::包含在此处做什么或者是多余的?

1 个答案:

答案 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