Dan*_*iel 1 c++ function-pointers member-pointers
帮助我理解以下代码片段:
(foo.h中)
class Foo
{
public:
typedef void (MyType::*Handler)(SomeOtherType* t);
Foo(Handler handler) : handler_(handler) { }
private:
Handler handler_;
};
Run Code Online (Sandbox Code Playgroud)
(mytype.h)
class MyType
{
public:
MyType() { }
void fun1() { }
void fun2() { }
};
Run Code Online (Sandbox Code Playgroud)
foo.h中的typedef究竟是什么声明?我可以看到它是某种函数指针,但星号的意义是什么?它似乎是取消引用一个类型(??)并以某种方式试图将新typedef指针"附加"到MyType类型(?!?).
有人可以在这里说清楚吗?真的很困惑:S
void (MyType::*)(SomeOtherType* t)是一个指向类MyType中成员函数的指针,它接受一个参数(指向SomeOtherType)并且不返回任何内容.