[英]C++ polymorphism - calling subclass methods from superclass
我正在嘗試將某些對象存儲在Animal的子類中。 我對它進行了結構化,因此我將擁有一個超類Animal
,其中以Reptile
和Mammal
為子類。 到目前為止,這些應該是抽象的,因為我在它們上實現了抽象方法。
每個都有子類,例如, Crocodile
和Lizard
是Reptile
子類,而Dog
和Cat
是Mammal
子類。
我將它們存儲在向量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.