@cpr4z

Можно ли обратиться к полю дочернего класса через указатель на базовый?

Столкнулся с проблемой следующего плана: один из методов интерфейса принимает shared_ptr на другой интерфейс, проблема в том, что в конкретной реализации первого интерфейса мне нужно обратиться к полю реализации второго интерфейса, но как привести указатель на базовый класс к дочернему, чтобы обратиться к его полю не используя dynamic_cast, не совсем понимаю, да еще к тому же вообще не очень хочется упоминать про реализацию второго интерфейса.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Если вы точно знаете, что это именно экземпляр дочернего класса, то можно скастовать к дочернему через dynamic_cast, или вернуть скастованный указатель на дочерний класс через какой-нибудь виртуальный метод Derived* GetDerived(). Без какого-либо преобразования к дочернему классу - не получится. Не упоминать этот дочерний класс - тоже. Только если вы это поле/метод выведите в виртуальный метод базового класса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы