Код: Выделить всё
Derived9
При наличии экземпляра Base* b существует ли простой способ проверить, является ли b экземпляром Derived1 , ...,
Код: Выделить всё
Derived5
Очевидный способ — проверить каждый из них:
Код: Выделить всё
if (dynamic_cast(b)) return true;
// ...
if (dynamic_cast(b)) return true;
return false
В идеале я хотел бы сделать что-то вроде:
Код: Выделить всё
const auto valid_derived_classes = {Derived1,...,Derived5};
for (const auto derived_class : valid_derived_classes)
{
if (dynamic_cast(b))
{
return true;
}
}
return false;
Для контекста: я хочу рассчитать температуру многих типов устройств, где каждое устройство назначено несколько датчиков. При выходе из строя всех датчиков, закрепленных за устройством, оно должно измерить температуру по данным некоторых аварийных датчиков. Есть несколько типов устройств, которые не должны этого делать. Поэтому при расчете температуры мне нужно проверить, является ли устройство исключительным.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-classes