Простая система событий в C ++
Я разрабатываю простую систему событий для своего игрового движка. Я хочу реализовать следующий интерфейс диспетчера событий:
// Create event dispatcher.
Dispatcher dispatcher;
// Create objects b and c.
// Created objects extend base A class.
A* b = new B();
A* c = new C();
// Register b and c in dispatcher.
// I guess I should also pass member function pointer,
// but I am not sure how to do it.
// Like this; dispatcher.Add(b, &B::DoWork) ?
// Member function that I want to accept is always bool func(/*no params*/)
dispatcher.Add(b /*, member function pointer?*/);
dispatcher.Add(c /*, member function pointer?*/);
// Trigger passed functions for registered objects.
dispatcher.Trigger();
Думаю, мне понадобится какая-то структура-обертка внутри Dispatcher для хранения пары [pObject, pFunc].
struct Wrapper
{
A* pObj; // Of base class A.
// ?? // Pointer to given member function of A.
};
Я не знаю, как реализовать логику указателя на функцию-член. Поскольку мне это нужно для системы реального времени, я бы предпочел относительно быстрое решение. Я ценю все предложения.
Я бы предпочел избегать сторонних библиотек.