Methodenaufrufe bei abgeleiteten Klassen
-
Hallo,
ich habe folgendes Problem. Ich habe eine Klasse(Box) erstellt, die eine Liste von Zeigern auf eine Basisklasse gate besitzt.
Gate* liste[20];
Von Gate gibt es zwei abgeleitete Klassen
class GateA : public Gate ... class GateB : public Gate
Jetzt gibt mir eine Methode
Gate& box::getGate(unsigned int index)
eine Referenz auf eine abgeleitete Klasse GateA und GateB zurück. Gate, GateA und GateB haben alle eine Methode trigger().
Wenn ich mir jetzt allerdings mittels getGate ein Objekt zurückgeben lasse und auf eine der abgeleiteten Klasse trigger() aufrufen möchte ruft er immer die Methode der Basisklasse Gate auf. Nur wenn ich das ganze Caste also
Gate* gatePtr; gatePtr = &box.getGate(index); ((GateA*)gatePtr)->trigger();
aufrufe, ruft er das Trigger der richtigen abgeleiteten Klasse auf.
Jetzt zwei möglichkeiten:
Es klappt irgendwie, das hier das richtige trigger der richtigen Klasse aufgerufen wird, oder ich kann irgendwie identifizieren, welche Klasse dieses Gate Objekt ist und von Hand Castings durchführen.Ich hoffe ihr konntet mein Problem verstehen und mir helfen,
vielen Dank im vorraus.
Pö
-
Na super, kaum schreibt man was ins Forum, findet sich die Lösung selbst.
Habe die Methode trigger in der Klasse Gate als virtual deklariert. Jetzt brauche ich kein Casting mehr machen, er ruft selbst die richtige Methode auf.
Danke trotzdem falls sich schon einer den Kopf zerbrochen hat
Gruß
Pö
-
Das war übrigens das falsche Forum: korrekt wäre C++
(Hier war C++/CLI)