Überprüfen Sie, ob eine Instanz der Basisklasse eine von einigen abgeleiteten Klassen istC++

Programme in C++. Entwicklerforum
Guest
 Überprüfen Sie, ob eine Instanz der Basisklasse eine von einigen abgeleiteten Klassen ist

Post by Guest »

Ich habe eine Klasse Base und sie hat viele abgeleitete Klassen: Derived1, ...,

Code: Select all

Derived9
.
Gibt es bei einer gegebenen Instanz Base* b eine saubere Möglichkeit, zu überprüfen, ob b eine Instanz von entweder Derived1 ist , ...,

Code: Select all

Derived5
?
Der naheliegende Weg besteht darin, jeden einzelnen davon zu überprüfen:

Code: Select all

if (dynamic_cast(b)) return true;
// ...
if (dynamic_cast(b)) return true;

return false
Das scheint sich unnötig zu wiederholen.
Idealerweise würde ich gerne so etwas machen wie:

Code: Select all

const auto valid_derived_classes = {Derived1,...,Derived5};

for (const auto derived_class : valid_derived_classes)
{
if (dynamic_cast(b))
{
return true;
}
}
return false;
Gibt es eine Möglichkeit, so etwas zu erreichen?
Zum Kontext: Ich möchte die Temperatur vieler Gerätetypen berechnen, und zwar für jedes Gerät sind einige Sensoren zugeordnet. Wenn alle einem Gerät zugeordneten Sensoren ausfallen, sollte es anhand einiger Notfallsensoren die Temperatur messen. Es gibt einige Gerätetypen, bei denen dies nicht der Fall sein sollte. Wenn ich also die Temperatur berechne, muss ich prüfen, ob ein Gerät außergewöhnlich ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post