在我之前关于抽象的问题之后,我还有另一个问题,我还有一个与在事件中设置数据有关的问题,一旦它被创建。
就目前情况而言,我可以创建任何类型的事件并毫无问题地应用它们的数据(使用策略设计模式的修改版本)。问题是我目前必须在创建事件时将其数据传递给它。
IEvent* newEvent = new SpeedEvent( eventID, interpolation, 50.0f );
或者
IEvent* newEvent = new AnimationEvent( eventID, interpolation, &newAnimation );
当我知道创建对象时的数据是什么时,这种方法很好,但是在很多情况下我不知道实例化时的数据是什么。
理想的情况是创建一个这样的新事件:
IEvent* newEvent = new SpeedEvent( eventID, interpolation );
然后以这种方式为其分配数据:
eventManager->assignData( eventID, *unknown data type* );
这样,我会让对象以自己的方式处理数据。任何有关如何解决此问题的建议将不胜感激,但是如果可以的话,我真的想避免使用模板。
我当前的数据和对象结构与我上一个问题的答案中建议的非常相似。