說: Apple是從基類Fruit Class派生的,然後是從基礎FruitPicker類派生的ApplePicker類。
ApplePicker類具有vector<Apple> appleList
,水果選取器類具有指向vector<Fruit>
的指針,即vector<fruit>* fruitList
。C++多態性和向量,將派生類的向量指向基類的向量
我需要能夠將矢量設置爲這個指針,所以抽象方法可以在水果選取器類中運行(因爲它們只關心水果成員)。但我無法設置此,當我試圖做到這一點:
this->fruitList = &(this->AppleList);
它給我的錯誤cannot convert to vector<Apple> to vector<Fruit>
。我嘗試了靜態轉換,它給了我同樣的錯誤。我做了一個類似的東西,非矢量基類和派生類,它很好。
我是C++新手,我通過NDK在Android上使用它。
所以是我想要做的不可能的,我必須使用像vector<Fruit*>
指針向量。
它不能完成,而是可以將迭代器傳遞給基類型。你以後稱之爲協變類型,我相信C#可以做到這一點。另外我會使用對矢量的引用而不是指針。 – paulm 2013-04-06 10:18:01
[一袋蘋果不是一袋水果](https://www.google.com/search?q=%22a+bag+of+apples+is+not+a+bag+of+fruit%22 )。 – 2013-04-06 10:22:17