次のコードスニペットを理解するのを手伝ってください。
(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