У меня есть ситуация, похожая на следующую:
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
может быть передано. У меня есть решение с использованием шаблона двойного посетителя, но это неуклюжий и запутанный.
Задача ещё не решена.
Других решений пока нет …