将Base *强制转换为正确的派生类

时间:2019-06-30 20:40:44

标签: c++ inheritance

假设一个std::vector<Base*>和一组类Derived1,...,DerivedN

决定运行时正确/最佳的架构是什么?我应该Derived*进入哪个dynamic_cast类?

示例: 我有以下课程:CatDogHorse等。它们都具有基类Animal。 我有一个函数可以为每个派生类创建一个实例,并且我想将指针保存在某个地方,例如基础* ptrs2derivedclesses

是否有更好的方法来保存所有派生类的实例?

1 个答案:

答案 0 :(得分:8)

  

在运行时决定应该动态广播到哪个Derived *类的正确/最佳架构是什么?

正确/最佳方法是使用(纯)虚拟函数设计基类的正确接口。在某些特殊情况下,有时可以使用动态/静态强制转换,但通常这表明设计不良。