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

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/

10-11 23:40