Есть два класса. Как определить, является ли первый класс дочерним классом второго?

В методе родительского класса хочу определить взаимодействие объекта с другими объектами этого родительского класса и всеми его дочерними элементами. Можно ли как-то определить, является ли некоторый класс дочерним классом другого класса.


Ответы (1 шт):

Автор решения: HolyBlackCat

Без примеров кода непонятно, но есть такие варианты:

  • Принимать ссылку или указатель на родительский класс, тогда можно будет обрабатывать и потомков. Тут пригодятся виртуальные функции.

  • Сделать шаблонную функцию, и проверять наследование через std::is_base_of_v или std::derived_from (последний заодно проверяет, что родитель публичный и однозначный (т.е. нет двух родителей одного типа)). Саму эту проверку - вписать в requires.

→ Ссылка