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