Помогите мне понять следующий фрагмент кода:
(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() { }
};
Что именно здесь объявил typedef в foo.h? Я вижу, что это какой-то указатель на функцию, но в чем смысл звездочки? Похоже, что он отменяет ссылку на тип (??) и каким-то образом пытается «прикрепить» вновь указатель typedef на тип MyType (?!?).
Может кто-нибудь пролить свет здесь, пожалуйста? Действительно смущен: S