帮助我理解以下代码段:
(foo.h中)
class Foo
{
public:
typedef void (MyType::*Handler)(SomeOtherType* t);
Foo(Handler handler) : handler_(handler) { }
private:
Handler handler_;
};
(mytype.h)
class MyType
{
public:
MyType() { }
void fun1() { }
void fun2() { }
};
foo.h中的typedef究竟是什么声明?我可以看到它是某种函数指针,但星号的意义是什么?它似乎是取消引用一个类型(??)并以某种方式试图将新typedef指针“附加”到MyType类型(?!?)。
有人可以在这里发光吗?真的很困惑:S
答案 0 :(得分:5)
void (MyType::*)(SomeOtherType* t)
是指向类MyType
中的成员函数的指针,它接受一个参数(指向SomeOtherType
的指针)并且不返回任何内容。
答案 1 :(得分:1)
指向MyType
成员函数的指针返回void
并将指针指向SomeOtherType
作为参数。