Проверьте, является ли экземпляр базового класса одним из производных классов.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проверьте, является ли экземпляр базового класса одним из производных классов.

Сообщение Anonymous »

У меня есть класс Base, и у него много производных классов: Derived1, ...,

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»