A と B の 2 つのクラスがあるとします。
class A
{
public:
typedef void (*Handler)( A * a );
Handler handler;
void foo() ( handler( this ); }
};
class B : public A
{
};
関数があるとします
void bar( B * b );
じゃあ行こうかな
B b;
b.handler = bar;???
私が宣言した場合void bar( A * a )
、すべてがクールですが、醜いa
a にキャストする必要があります。B*
typedef をテンプレート化できないので、これを行う良い方法はありますか?