2011-03-11 29 views
3

我編程在C++,我有3類,相互繼承:實現其他類的方法,以及使用一個類的方法,自己的

Hatchback -> Car -> Vehicle; 

我想打印從每個屬性類使用void print()方法,

每個類都有一個打印方法,可以打印其自己的屬性。

void Vehicle::print() 
{ 
    // Vehicle attributes 
} 

void Car::print() 
{ 
    // Car attributes 
} 

void Hatchback::print() 
{ 
    // Hatchback Attributes 
} 

我創建初始化所有的所有類的屬性在一個構造函數的對象:

Hatchback hatchback("L880UCD", "Vauhall", "Corsa", 
        "White", "None", "Car", "Hatchback", 
        3, 5, "Manual", 3, 2, 1); 

的問題是,我想打印使用一個打印方法的所有屬性,所以,當我打電話,

object.print(); 

它貫穿車輛的打印方法,然後是汽車打印方法,然後是兩廂打印方法。

我知道我可以打印Hatchback打印方法的所有屬性,因爲所有的東西都被繼承了。如果可能的話,我想避免在一個類的方法中打印所有3個類的數據......我寧願每個類都處理它自己的方法和功能!

不僅如此,我有很多其他類,包括汽車,公共汽車和貨車,所有汽車,集裝箱,油罐車,平板車,摩托車,過境等ETC ETC所有汽車,貨車和巴士inhert。

所以我不想在每個單獨的底部派生類中編寫Print Vehicle!

如果有辦法做到這一點,我將非常感謝迴應。

我試過使用虛擬函數,但得出的結論是,他們只是選擇在運行時使用哪種方法,而不是合併打印功能。

感謝您的閱讀!對不起,如果它的模糊或Noob問題...我是新的堆棧溢出! :)

回答

7

如果你問,如果你可以從一個派生類中調用基類的方法,那麼,你可以:

void Vehicle::print() { 
    std::cout << "Vehicle attributes" << std::endl; 
} 

void Car::print() { 
    Vehicle::print(); 
    std::cout << "Car attributes" << std::endl; 
} 
3

有無兩廂:: print()函數調用汽車::打印(),然後可以調用車輛::打印()

2

汽車::打印()打印出該車的屬性,然後調用車輛::打印()。 在兩廂::打印()打印出兩廂attribtues,然後再打車::打印() 等等

相關問題