如何理解父类的水平

How to understand level of parent class

本文关键字:水平 父类 何理解      更新时间:2023-10-16

想象一下我有这样的类:

class Base
{
};
class D2: public Base
{
}
class D3: public D2
{
};
class D4: public D3
{
};

继续...

我有一个类的指针列表。

假设我不知道这些类的继承顺序。我只能理解指针是否是给定类的实例。 (我无法手动检查,因为人们稍后会注册这些类)

例:

D3* d3 = new D3();
D2::isInstance(d3); //return true
D4::isInstance(d3); //return false

当我弹出类的指针时,我想将其转换为大多数派生类。

主要问题:是否有一种C++方法可以理解 D3 是否继承自 D2?如果存在这样的方法,我可以解决。

谢谢。

由于您不检查特定对象,因此可以使用std::is_base_of,它是编译时,因此是安全的。链接到参考。