Re: Какой дизайн паттерн использовать?
От: Vamp Россия  
Дата: 03.07.21 02:22
Оценка: 1 (1)
Здравствуйте, k55, Вы писали:

k55>Какой еще есть способ что бы уйти от "вариантов" и спрятать работу с event в обертке.

k55>Ограничения: C++11.
Типизировать callback типом эвента. Заодно упростится dispatch. Ну как-то так:

struct EventA {
   static constexpr auto id = 0;
   
   template <class T>
   static void process(const char* raw, T&& callback) {
      // get data from char array
      callback(data1, data2, data3);
   }
};

std::map<int, std::vector<std::function<void (const char*)>> subs;
template<class Event, class Subscriber>
void subscribe(Subscriber sub)
{
    subs[Event::id].push_back([sub](const char* raw) { Event::process(raw, sub); });
}
Да здравствует мыло душистое и веревка пушистая.
Отредактировано 03.07.2021 2:24 Vamp . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.