假设我有A类,B类继承A,C类也继承A. C类有方法F,而B类没有。
A级{ //有些东西};
B级:公共A { //有些……
如果这确实是你想要坚持的设计,你首先需要有一个虚拟的基础(例如通过虚拟声明析构函数) A : virtual ~A() = default; ,那么你可以简单地做:
A
virtual ~A() = default;
if(typeid(*_a) == typeid(C)) { static_cast<C*>(_a)->F(); }