вектор объектов
Я попытался добавить объекты в вектор «содержимого» и использовать show () для всех из них. Но объекты, которые являются дочерними (A, B) «Base», ведут себя так, как будто они «Base», что не является моим намерением. Кажется, я пытался использовать виртуальные функции, но это не работает.
Я надеюсь, что код будет говорить сам за себя.
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
}
Заранее спасибо.