Система событий: обратные вызовы или очередь событий - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время я разрабатываю систему событий для своего игрового движка. Я придумал два способа реализовать обработку событий:

1. «Очередь событий»

std::queue<Event*> events;
// ...

while(hasUnhandledEvents())
{
    Event e = pollEvent();

    // ... handle event
}

2. Функции обратного вызова

void cbfun(const Event &e)
{
    // ... handle event
}

// ...

setCallbackFunction(cbfun);

Я не совсем уверен, какая система подходит лучше всего. Я бы предпочел функцию обратного вызова, но проблема, с которой я сталкиваюсь, заключается в том, что функция обратного вызова является частью класса. Я не знаю точно почему, но очень утомительно передавать указатель на функцию ... Я знаю, что могу использовать std :: function, но мне это кажется немного нелегким (из-за заполнителей et c .. .). Должен ли я по-прежнему использовать функцию обратного вызова или рассматривать очередь событий? Что Вы предпочитаете?

...