C++中如何得知子类继承自哪个父类

发布网友 发布时间:2024-10-24 09:24

我来回答

5个回答

热心网友 时间:2024-10-25 14:50

MFC中有这样的例子,"类的动态识别技术"。

热心网友 时间:2024-10-25 14:42

可以,请下载一本<Inside C++ Object Model>看一下,
里面有类的具体结构,找到RTTI,然后小小的黑一下就可以了。
但类的类型存储并没有被标准化,所以要注意一下,因为换个编译器可能就不对了。

=============
前提这个子类的父类是从N个已知父类中去选
如(B代表Base, D代表Derive)
class B1;
class B2;
class B3;

class D : public B2;
D d;
有几种方法:

1. B1 *p = dynamic_cast<B1*>(&d);
如果p不为NULL,则B1是d的父类
B2,B2类似比较

2. typeid(B1) == typeid(d); 是父类就为真

PS: 在编译器设置中要打开RTTI才行

热心网友 时间:2024-10-25 14:43

应该没有关键字
在 MFC 深入浅出中有讲到一种解决办法
比较复杂,如果弄懂了,水平可大幅提高

热心网友 时间:2024-10-25 14:43

你可以dynamic_cast转换呀,判断返回值。

或者你可以向MFC那样,自己实现这个功能

typeid也是个选择

热心网友 时间:2024-10-25 14:45

用RTTI信息是可以识别类的信息的,但是难度相对比较高。究其原因就是C++允许多继承实现。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com