gpt4 book ai didi

c++ - 使用基本指针迭代 std::map 的一种派生类型

转载 作者:行者123 更新时间:2023-11-28 07:28:20 25 4
gpt4 key购买 nike

我有一个 std::map<int, std::shared_ptr<base>> Controller 类中的 m_items。

Controller 将项目提供给外部消费者,他们只需要基础,因此多态性非常适合。但是,当某些事件发生时, Controller 内部需要更新或删除特定类型的项目。更新本质上非常不同,每个事件都需要不同的数据集,所以我不能在基类中只使用通用的“更新”方法。我需要的是一种在事件发生时仅迭代某些派生类型(然后我需要将其转换为派生类型指针)的方法。一种解决方案是添加 EDerivedType GetType()在基类中,每个派生类型都返回不同的枚举值,因此当我迭代时,我可以与所需类型进行比较。虽然这有效,但它不是 OO 方法。

谁能建议一种更优雅的方法来做到这一点?

谢谢...

最佳答案

我认为 Visitor设计模式可以为你工作。您的基类将有一个抽象的 accept,它将访问者作为参数。

每个对象都有一个accept,它将调用正确的访问者函数来进行更新。

关于c++ - 使用基本指针迭代 std::map 的一种派生类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com