【发布时间】:2011-02-17 09:14:56
【问题描述】:
假设我在 C++ 中有以下类,我想检查它们的继承:
Vehicle
Motorcar 是 VehicleAircraft 是 Vehicle
Biplane 是 Aircraft 是 VehicleHelicopter 是 Aircraft 是 Vehicle。
我想写一个方法getClassLineage()来做以下事情:
Biplane b;
cout << b.getClassLineage() << endl; // prints "Vehicle--Aircraft--Biplane"
Helicopter h;
cout << h.getClassLineage() << endl; // prints "Vehicle--Aircraft--Helicopter"
Motorcar m;
cout << m.getClassLineage() << endl; // prints "Vehicle--Motorcar"
似乎应该有一种简单的递归方式来做到这一点,只需在超类中编写一次,而无需在每个派生类中复制一个基本相同的方法。
假设我们愿意声明(伪代码)Helicopter.className = "Helicopter" 和
typedef Aircraft baseclass 在每个派生类中,但尽量避免复制和粘贴 getClassLineage()。
有没有优雅的写法?
(感谢您的意见!)
【问题讨论】:
-
你试过type_info 吗?
标签: c++ inheritance