abgeleitete Objekte in vector<basisClass*> methoden Aufrufen / casten?



  • Hallo,

    ich habe in einem std::vector Pointer zu Objekten einer Basisklasse B
    z.B:

    std::vector<B*> my_vec;
    

    in my_vec befinden sich auch Objekte von C*, welches von B abgeleitet ist.

    Wenn ich jetzt eine Methode aufrufen will, wird ja (da die Objekte im Vektor vom Typ B* sind immer die Methode der Basisklasse aufgerufen.

    Ich könnte jetzt natürlich an jeder Stelle im Code einen static_cast<> durchführen aber das erscheint mit etwas gefährlich, dass ich das mal vergesse.

    Eine Überlegung die ich hatte ist in die Basisklasse eine methode einzuführen, die anhand eines Parameters, welcher ja nach Child-Klasse unterschiedlich ist den Objekttype erkennt und dann einen cast durchführt.

    Das erscheint mir aber unnötig komplex und ich muss dann in der Basisklasse alle Abgeleiteten Klassen kennen was irgendwie unsauber ist.



  • goaran schrieb:

    Wenn ich jetzt eine Methode aufrufen will, wird ja (da die Objekte im Vektor vom Typ B* sind immer die Methode der Basisklasse aufgerufen.

    Kennst du virtual? Das macht was du willst.



  • danke für die schnelle Antwort, das klappt 🙂


Anmelden zum Antworten