在C ++(无C ++ 11)中为模拟框架整理设计选项需要一些帮助。 用户创建“事件调度程序”并在“事件”发生时注册兴趣(使用“观察者”)。调度程序内部保存“事件源”,用于检测事件激活并管理对观察者的通知。观察者,事件和事件源类之间存在1:1:1的映射。
我想用
扩展系统我考虑使用“事件类型标识符”(字符串或Base.Derived表示法),它可以工作但感觉不正确(例如,类型安全依赖于运行时整数,继承是有限的,太多的类型转换。 ..) 非常感谢代码结构和机制的建议。
答案 0 :(得分:0)
这是使用dynamic_cast
的正确情况。它只需要在一个地方。
所有事件都从单个基类继承,并且所有事件处理程序都从(不同的)单个基类继承。这使得所有事件源和调度程序均匀。事件由基类中的处理程序检查和过滤。
This是一个粗略的10分钟草图,描述了整体结构的样子。草图中没有事件源,因为我不完全清楚它们应该是什么样子。我只是从main()
开火事件。