我std::map<int, std::shared_ptr<base>>
在控制器类中有一个 m_items。
控制器将项目提供给外部消费者,他们只需要基础,因此多态性非常适合。然而,当某些事件发生时,控制器内部需要更新或删除特定类型的项目。更新本质上是非常不同的,并且每个事件都需要不同的数据集,所以我不能只在基类中有一个通用的“更新”方法。我需要的是一种仅在事件发生时迭代某些派生类型(然后我需要将其转换为派生类型指针)的方法。一种解决方案是EDerivedType GetType()
在基类中添加 a ,每个派生类型返回一个不同的枚举值,因此当我迭代时,我可以与所需的类型进行比较。虽然这可行,但它不是一种面向对象的方法。
谁能建议一种更优雅的方式来做到这一点?
谢谢...