2012-03-13 102 views
0

我有一個類Car,它繼承了QList < int>。我想知道如何使用我剛剛繼承的QList?C++繼承-QList

從我的業餘愛好者對如何使用繼承的理解中,如果Car繼承了Vehicle,我將通過使用Vehicle :: getWheels()來訪問Vehicle的方法。如果我繼承QList,這將如何工作?

+7

從像QList這樣的容器繼承是沒有意義的。它沒有可以重新實現的虛擬方法。更好地遵循「繼承構成」規則,並使QList成爲成員。 – 2012-03-13 17:57:30

+0

我完全同意弗蘭克奧斯特費爾德 - 謝謝他。從容器中類繼承時要非常小心,並重新分析您的設計:遵循Frank提到的規則 – milyaaf 2012-03-14 06:39:13

回答

1

如果你的汽車繼承自Vehicle,你可以簡單地使用繼承的方法(如果你沒有覆蓋那些方法)。例如:

class Vehicle 
{ 
    int wheels_; 

    public: 
     Vehicle(int wheels=4) 
     : wheels_(wheels) 
     { 
     } 

     int getWheels() const { return wheels_; } 
}; 

class Car: public Vehicle 
{ 
}; 

Car myCar; 
myCar.getWheels(); 

因此,對於你的問題,你可以簡單地使用QList<int>成員沒有被明確的,如果你的類是decleared爲class Car : public QList<int> { ... };

+0

如果Car繼承QList < int >,這將如何工作?例如,我如何將元素添加到QList中? – user27279 2012-03-13 17:30:51

+0

你可以用'Car c; c.append(5);' – hochl 2012-03-13 17:39:31