說我有以下類在C++中,我要檢查他們的產業在C++中反映類的繼承樹?
Vehicle
Motorcar
是一個Vehicle
Aircraft
是一個Vehicle
Biplane
是Aircraft
是Vehicle
Helicopter
是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](http://www.cplusplus.com/reference/std/typeinfo/type_info/ )? – DumbCoder 2011-02-17 09:30:14