Есть два класса. Как определить, является ли первый класс дочерним классом второго?
В методе родительского класса хочу определить взаимодействие объекта с другими объектами этого родительского класса и всеми его дочерними элементами. Можно ли как-то определить, является ли некоторый класс дочерним классом другого класса.
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Без примеров кода непонятно, но есть такие варианты:
Принимать ссылку или указатель на родительский класс, тогда можно будет обрабатывать и потомков. Тут пригодятся виртуальные функции.
Сделать шаблонную функцию, и проверять наследование через
std::is_base_of_v
илиstd::derived_from
(последний заодно проверяет, что родитель публичный и однозначный (т.е. нет двух родителей одного типа)). Саму эту проверку - вписать вrequires
.