假设我有两个类,A和B:
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
强制转换为一个B*
,这很丑陋。我不能将typedef用作模板,所以有没有一种更好的方法呢?