vector de objetos

Intenté agregar objetos al vector "contenido" y usar show () en todos ellos. Pero los objetos que son hijos (A, B) de "Base" se comportan como si fueran de tipo "Base", lo que no es mi intención. Como parece, intenté usar funciones virtuales pero no funciona.

Espero que el código hable por sí mismo.

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
}   

Gracias por adelantado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta