我需要实现一个事件处理程序类,但是遇到了一个错误,无法声明一个 void 类型的数组:
class SomeClass
{
public:
void registerEventHandler(int event, void (*handler)(std::string));
private:
// here i get this error: declaration of ‘eventHandlers’ as array of void
void (*eventHandlers)(std::string)[TOTAL_EVENTS];
}
void SomeClass::registerEventHandler(int event, void (*handler)(std::string))
{
eventHandlers[event] = handler;
}
void handler1(std::string response)
{
printf("ON_INIT_EVENT handler\n");
}
void handler2(std::string response)
{
printf("ON_READY_EVENT handler\n");
}
void main()
{
someClass.registerEventHandler(ON_INIT_EVENT, handler1);
someClass.registerEventHandler(ON_READY_EVENT, handler2);
}
你能帮我弄清楚确切的语法吗?谢谢!
event_handler = std::function<void(std::string)>
- 它将接受更多可调用对象,不仅仅是函数,还包括 lambda 表达式等。 - MSalters