kleines problem mit vererbungs-theorie
-
kurze frage:
ich habe einen STL vector vec<A *>, wobei folgendes gilt
class A{...}; class B : public A{...};
geht es dass man ein element von vec problemlos in ein (B
casten kann??
danke
gruss
-
Ich meine es sollte möglich sein, denn eine Basisklasse kann man immer in eine ihrer abgeleiteten Klassen casten.
Da gibt's so eine Methode, die nennt man ausprobieren
-
Wenn du auch ein B* eingefügt hast, ist das kein Problem.
-
geht es dass man ein element von vec problemlos in ein (B
casten kann??
Das hat nix mit dem vector zu tun ...
und ein Cast von A * -> B * ist niemals ohne Probleme
Sind alle deine Elemente vom Typ B * solltest ueberlegen den typ des vectors auch auf B * zu setzen ...Hast du A * oder Objecte ausm anderen Zweig ( C * z.b. wenn C nur von A abgeleitet ist) wird jeder cast in irgend einer form fehlschlagen ...
Es gibt dafuer dynamische casts ...
A* pA; // irgendwo auf was sinnvolles zeigen lassen B* pB = dynamic_cast<B *>(pA);
War dein A wirklich ein B, war der cast erfolgreich, wenn nicht, ist pB NULL.
erfordert das die RTTI im compiler eingeschalten istIn vielen buechern ueber fortgeschrittene programmierung meint man, das extensives benutzten von dynamischen casts schlechter programmierstiel ist. Dynamische casts lassen sich oft durch besseres design vermeiden ....
Ciao ...