假设我有两个班级,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*
为丑陋的。我不能模板化类型定义,那么有没有一种很好的方法呢?