by Guest » 16 Jan 2025, 07:06
Ich habe eine Klasse Base und sie hat viele abgeleitete Klassen: Derived1, ...,
.
Gibt es bei einer gegebenen Instanz Base* b eine saubere Möglichkeit, zu überprüfen, ob b eine Instanz von entweder Derived1 ist , ...,
?
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.
Ich habe eine Klasse Base und sie hat viele abgeleitete Klassen: Derived1, ...,[code]Derived9[/code].
Gibt es bei einer gegebenen Instanz Base* b eine saubere Möglichkeit, zu überprüfen, ob b eine Instanz von entweder Derived1 ist , ...,[code]Derived5[/code]?
Der naheliegende Weg besteht darin, jeden einzelnen davon zu überprüfen:
[code]if (dynamic_cast(b)) return true;
// ...
if (dynamic_cast(b)) return true;
return false
[/code]
Das scheint sich unnötig zu wiederholen.
Idealerweise würde ich gerne so etwas machen wie:
[code]const auto valid_derived_classes = {Derived1,...,Derived5};
for (const auto derived_class : valid_derived_classes)
{
if (dynamic_cast(b))
{
return true;
}
}
return false;
[/code]
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.