假设一个std::vector<Base*>
和一组类Derived1
,...,DerivedN
。
决定运行时正确/最佳的架构是什么?我应该Derived*
进入哪个dynamic_cast
类?
示例:
我有以下课程:Cat
,Dog
,Horse
等。它们都具有基类Animal
。
我有一个函数可以为每个派生类创建一个实例,并且我想将指针保存在某个地方,例如基础* ptrs2derivedclesses
。
是否有更好的方法来保存所有派生类的实例?
答案 0 :(得分:8)
正确/最佳方法是使用(纯)虚拟函数设计基类的正确接口。在某些特殊情况下,有时可以使用动态/静态强制转换,但通常这表明设计不良。在运行时决定应该动态广播到哪个Derived *类的正确/最佳架构是什么?