Vektor von Objekten

Ich habe versucht, dem "content" -Vektor Objekte hinzuzufügen und show () für alle zu verwenden. Aber die Objekte, die Kinder (A, B) von "Base" sind, verhalten sich so, als wären sie vom Typ "Base", was nicht meine Absicht ist. Wie es scheint, habe ich versucht, virtuelle Funktionen zu verwenden, aber es funktioniert nicht.

Ich hoffe, dass der Code für sich selbst spricht.

class Base {
    public:
        virtual void show() { cout << "Base "; }
};

class A : public Base {
    public:
        virtual void show() { cout << "A "; }
};

class B : public Base {
    public:
        virtual void show() { cout << "B"; }
};



vector<Base> content;

void add(Base &o) {
    content.push_back(o);
}

A test1;
B test2;

add(test1);
add(test2);

for (size_t i = 0; i < content.size(); i++) {
        collection[i].show(); // output is: Base Base instead of A B
}   

Danke im Voraus.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage