我有一些大的代码行,我想打包到定义中以便快速使用。
EventManager::get_mutable_instance().get<EventManager::KeyEvent>("KeyPressed").Call(EventManager::KeyEvent::ArgsType(localEvent.Key));
这是EventManager是单例类。我希望只传入定义EventManager :: KeyEvent类型和信号名称“ KeyPressed”。你能帮我吗?
最佳答案
由于我不喜欢定义的事实,因此我将制作一个“包装器”功能,如下所示:
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));
编辑2:
我不是很习惯于您的代码,但是这样更具可读性和可调试性。 (请注意,班级名称不是您的,但希望您能明白我的意思)
Event event = EventManager::get_mutable_instance().get<type>(whatToCall);
ArgType argType = EventManager::KeyEvent::ArgsType(localEvent.Key);
event.call(argType);
关于c++ - 定义类(class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3078885/