簡體   English   中英

C ++多態性-從超類調用子類方法

[英]C++ polymorphism - calling subclass methods from superclass

我正在嘗試將某些對象存儲在Animal的子類中。 我對它進行了結構化,因此我將擁有一個超類Animal ,其中以ReptileMammal為子類。 到目前為止,這些應該是抽象的,因為我在它們上實現了抽象方法。

每個都有子類,例如, CrocodileLizardReptile子類,而DogCatMammal子類。

我將它們存儲在向量std::vector<Animal*>以具有多態性,但是在調用例如Mammal專用方法時遇到了問題,該方法在Animal超類中沒有意義,因為Reptile是它的子類。

std::vector<Animal*> _list_animals;
...
_list_animals[0] = new Dog();
_list_animals[0]->foo(); //foo is a virtual method from Animal, so no problems here

_list_animals[0]->bar(); //bar is a method from `Mammal` only, so it can't be called like this

沒有鑄造,我怎么能使用這種方法?

重新設計代碼結構,以免出現此問題是您的最佳選擇。 但是,如果您堅持要這樣做,請在StackOverflow上查看以下答案:

子類方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM