Можно ли обратиться к полю дочернего класса через указатель на базовый?
Столкнулся с проблемой следующего плана: один из методов интерфейса принимает shared_ptr на другой интерфейс, проблема в том, что в конкретной реализации первого интерфейса мне нужно обратиться к полю реализации второго интерфейса, но как привести указатель на базовый класс к дочернему, чтобы обратиться к его полю не используя dynamic_cast, не совсем понимаю, да еще к тому же вообще не очень хочется упоминать про реализацию второго интерфейса.
Dmitrii, рассматривал такой вариант, но мне нужно вернуть std::vector с указателями на структуру, которая есть в конкретной реализации, и как-то пихать реализацию в интерфейс не хотелось бы.
мне нужно обратиться к полю реализации второго интерфейса, но как привести указатель на базовый класс к дочернему, чтобы обратиться к его полю не используя dynamic_cast, не совсем понимаю, да еще к тому же вообще не очень хочется упоминать про реализацию второго интерфейса.
Для тестирования надо?
Просто звучит так как - я конешно хочу использовать ООП но в то-же время не хочу. Вы уж определитесь там...
Если вы точно знаете, что это именно экземпляр дочернего класса, то можно скастовать к дочернему через dynamic_cast, или вернуть скастованный указатель на дочерний класс через какой-нибудь виртуальный метод Derived* GetDerived(). Без какого-либо преобразования к дочернему классу - не получится. Не упоминать этот дочерний класс - тоже. Только если вы это поле/метод выведите в виртуальный метод базового класса.