В принципе мне нужно реализовать класс обработчика событий, но впадать в ошибку, что я не могу объявить массив пустот:C++ Объявление массива указателей на функции
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' - он примет большее количество вызываемых объектов, а не только функции, но также лямбда-выражения и т. Д. –
MSalters
... и добавьте огромный накладные расходы – cubuspl42