Pointertyp konvertieren
-
Hey

Ich hab ein kleines Problem und weiß nicht genau wie ich es angehen soll.
Folgende Klassenstruktur:
class A { public: A() {} }; class B : public A { public: void machWas() {} };und dieser Code:
A* object = getObject(); B* b = object; // Hier muss konbertiert werden b->machWas()getObject() liefert mir ein Objekt einer abgeleiteten Klasse von A. In meinem Fall gibt es viele Klassen, die von A erben. Zur Compile-Zeit weiß man nicht, welches.
An bestimmten Stellen jedoch kann man sich sicher sein, dass z.B. eine Instanz von B zurückgeliefert wird (siehe Beispiel). In diesem Fall muss man doch irgendwie den Pointertyp konvertieren können.Ich hoffe, ihr könnt mir da weiterhelfen.

Grüße
-
Zur Compile-Zeit weiß man nicht, welches.
Natürlich weiß man das.
Wenn B von A erbt, kannst du dynamic_cast verwenden.
-
Athar schrieb:
Zur Compile-Zeit weiß man nicht, welches.
Natürlich weiß man das.
Wenn B von A erbt, kannst du dynamic_cast verwenden.
Wenn A mindestens eine virtuelle Funktion hat (der Destruktor bietet sich an).
Lars
-
Vielen Dank, es funktioniert.

-
Wenn tatsächlich bekannt ist, dass das an der Stelle ein "B" ist, tuts auch ein static_cast.