wektor obiektów

Próbowałem dodać obiekty do wektora „content” i użyć show () na wszystkich. Ale obiekty będące dziećmi (A, B) „Bazy” zachowują się tak, jakby były typu „podstawowego”, co nie jest moim zamiarem. Jak się wydaje, próbowałem użyć funkcji wirtualnych, ale to nie działa.

Mam nadzieję, że kod będzie mówił sam za siebie.

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
}   

Z góry dziękuję.

questionAnswers(5)

yourAnswerToTheQuestion