Тройная диспетчеризация

У меня есть ситуация, похожая на следующую:

class EventHandler { ... };
class Event {void Accept(EventHandler&) { ... }};

class SpecialEventHandler : public EventHandler { ... };
class SpecialEvent : public Event {void Accept(SpecialEventHandler&) { ... }};

Есть некоторые события, которые являются подтипом Event и некоторые, которые являются подтипом SpecialEvent, Эти события добавляются в очередь Eventс, а затем мне нужно обработать их с SpecialEventHandler,

Проблема заключается в обработке специальных событий, так как Accept метод, который может быть вызван, является одним в Event так что только EventHandler может быть передано. У меня есть решение с использованием шаблона двойного посетителя, но это неуклюжий и запутанный.

  • Есть ли образец для такой ситуации?
  • Есть ли лучший способ сделать это?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]