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