разумно порешать этот вопрос?
Есть некий интерфейс, IHistory, который оперирует интерфейсом ICommand:
std::list<std::unique_ptr<ICommand>>::iterator begin();
std::list<std::unique_ptr<ICommand>>::iterator end();
std::list<std::unique_ptr<ICommand>>::iterator top();
Его реализует класс DrawHistory, который должен оперировать классом DrawCommand (реализует интерфейс ICommand). Но тк смарт поинтеры не ковариантны, то я не могу использовать DrawCommand.
Изначальная идея была в разделении уровней абстракции, но что-то не сложилось с таким раскладом. Я правильно понимаю, что dynamic_cast это моя судьба в данном случае?
есть же dynamic_pointer_cast и static_pointer_cast для этого (в отличие от dynamic_cast и static_cast)
Обсуждают сегодня