Problem mit dem Aufrufen der richtigen virtuellen Funktion aus einem Vector



  • Ich möchte gerne folgendes machen

    class A
    {
    public:
    virtual void foo();
    };
    
    class B : public A
    {
    public:
    virtual void foo();
    };
    
    class C
    {
    public:
    vector<A> blub;
    };
    

    So, jetzt möchte ich das wenn ich in den blub vector ein B Objekt rein tue und foo() aufrufe die foo() Methode von B Aufgerufen wird und nicht von A.
    Wenn ich die Threads die ich zu diesem Thema gefunden habe richtig verstanden hab, wo ich mir nicht so sicher bin 😉 , ist das nicht möglich...
    Könnt ihr mir sagen wie ich das umgehen kann oder anders realisieren kann ?

    Ich möchte im Prinzip eine Liste haben wo ich verschiedene Klassen rein tun kann, um dann jeweils die individuell implementierte foo() Methode auf zu rufen...



  • Hallo,

    Wenn du einen vector mit Zeigern auf A nimmst, geht das so. Polymorphie funktioniert nur mit Zeigern oder Referenzen.



  • Das des so einfach ist hätte ich jetzt nicht gedacht 😉

    Danke für die schnelle Hilfe !


Anmelden zum Antworten