【发布时间】:2015-07-25 10:43:22
【问题描述】:
我需要定义一个事件处理程序,然后将其添加到某个索引处的处理程序数组中。处理程序永远不会以其真实名称调用,因此我想在一个地方同时处理定义和赋值。一个好的解决方案如下所示:
MAKE_HANDLER(evet_code, my_event) {
//handle the event
}
我幼稚的解决方案是将其扩展为
void on_my_event(event* ev);
array_of_handlers[event_code] = &on_my_event;
void on_my_event(event* ev) {
//handle the event
}
显然这是行不通的,因为赋值不能在全局范围内发生(通过常量初始化除外)。我知道我可以让一个宏定义函数,另一个在 main 中分配它,但是当我有许多处理程序时,这将是信息的重复并且使用起来非常乏味。还有哪些其他解决方案?
【问题讨论】: