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.



  • 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ß



  • Das war übrigens das falsche Forum: korrekt wäre C++
    (Hier war C++/CLI)


Anmelden zum Antworten