Klassen / Vererbung



  • Hallo!

    Ich glaube meine Frage, ist am besten durch ein Code-Beispiel zu erläutern:

    class Parent
    {
      public:
       ..
    
       MyFunc()
       ..
    }
    
    class Kid:Parent
    {
      public:
       ..
    
       MyFunc()
       ..
    }
    
    Kid kid;
    

    Ich möchte nun folgendes tun: Eine einfach verkettete Liste anlegen, in der auf Objekte des Typs Parents verwiesen wird. Hier sollen nun Objekte gespeichert werden, die tatsächlich der Klasse Parent angehören, aber auch Objekte der Klasse Kid, KidX etc., die von der Klasse Parent abgeleitet wurden.

    Wenn ich nun innerhalb der Liste MyFunc() aufrufe, wird immer der Code der Parent-MyFunc() aufgerufen, auch wenn es sich um ein Objekt der Klasse Kid handelt, die eine eigene MyFunc()-Funktion hat. Wenn ich kid.MyFunc() ohne Umweg über den Zeiger in der Liste aufrufe, funktioniert alles prima.

    Wie kann ich es schaffen, dass ich Objekte verschiedener Klassen, die aber alle von einer Parent-Klasse abgeleitet sind unter einen Hut bringe und beim Aufruf einer gemeinsamen Funktion die Funktion der vererbten Klasse aufgerufen wird? Ich wäre auch schon für ein Stichwort dankbar unter dem ich beim Googeln was passendes finde, dort habe ich nämlich gerade ergebnislos gesucht.

    Danke im Voraus für Eure Hilfe!

    Frohe Ostern noch Euch allen!
    Mr. Moo



  • stichwort: "virtual"

    (btw. class Kid:Parent Kid erbt privat von Parent und nicht public! Also ist Kid kein Parent, sondern Kid ist nur implementiert mit Parent)



  • Danke Dir!

    Stichwort "virtual" hat schon gereicht um entsprechende Ausführungen dazu zu finden 🙂


Anmelden zum Antworten