繁体   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