Say I have the following classes in C++, and I want to inspect their inheritance:
Vehicle
Motorcar
is a Vehicle
Aircraft
is a Vehicle
Biplane
is an Aircraft
is a Vehicle
Helicopter
is an Aircraft
is a Vehicle
.
I want to write a method getClassLineage()
to do the following:
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"
It seems like there should be a simple recursive way to do this by writing it once in the super-class, without duplicating an essentially identical method in every single one of the derived classes.
Assume we're willing to declare (pseudocode)Helicopter.className = "Helicopter"
and
typedef Aircraft baseclass
in each of the derived classes, but trying to avoid copying and pasting getClassLineage()
.
Is there an elegant way to write this?
(Thank you for your thoughts!)