定义类

时间:2010-06-20 10:23:01

标签: c++

我有一些很大的代码行,我想打包定义以便快速使用。

EventManager::get_mutable_instance().get<EventManager::KeyEvent>("KeyPressed").Call(EventManager::KeyEvent::ArgsType(localEvent.Key));

这是 EventManager 是单例类。我更愿意只定义 EventManager :: KeyEvent 类型和信号名称“KeyPressed”。你能帮我解决这个问题吗?

1 个答案:

答案 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);