[英]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.