我有一些很大的代码行,我想打包定义以便快速使用。
EventManager::get_mutable_instance().get<EventManager::KeyEvent>("KeyPressed").Call(EventManager::KeyEvent::ArgsType(localEvent.Key));
这是 EventManager 是单例类。我更愿意只定义 EventManager :: KeyEvent 类型和信号名称“KeyPressed”。你能帮我解决这个问题吗?
答案 0 :(得分:1)
由于我不喜欢定义,我会像这样制作一个“包装”函数:
public void call(EventType type, String whatToCall) {
EventManager::get_mutable_instance().get<type>(whatToCall).Call(EventManager::KeyEvent::ArgsType(localEvent.Key));
}
编辑: 未经测试的定义可能如下所示:
#define call(Type,Name) \
EventManager::get_mutable_instance().get<Type>(Name).Call(EventManager::KeyEvent::ArgsType(localEvent.Key));
EDIT2: 我并不真正习惯你的代码,但是它更具可读性和可调性性。 (请注意,班级名称不是你的,但我希望你能看到我的意思)
Event event = EventManager::get_mutable_instance().get<type>(whatToCall);
ArgType argType = EventManager::KeyEvent::ArgsType(localEvent.Key);
event.call(argType);