Я хотел бы хранить экземпляры нескольких классов в векторе. Поскольку все классы наследуются от одного и того же базового класса, это должно быть возможно.
Представьте себе эту программу:
#include <iostream>
#include <vector>
using namespace std;
class Base
{
public:
virtual void identify ()
{
cout << "BASE" << endl;
}
};
class Derived: public Base
{
public:
virtual void identify ()
{
cout << "DERIVED" << endl;
}
};
int main ()
{
Derived derived;
vector<Base> vect;
vect.push_back(derived);
vect[0].identify();
return 0;
}
Я ожидал, что он напечатает "DERIVED", потому что метод "ident" является виртуальным. Вместо этого 'vect [0]' кажется экземпляром "Base", и он печатает
БАЗА
Думаю, я мог бы написать свой собственный контейнер (возможно, полученный из вектора) каким-то образом, который способен это сделать (возможно, только указатели...). Я просто хотел спросить, есть ли для этого метод С++. И я хотел бы быть полностью векторно-совместимым (просто для удобства, если другие пользователи должны когда-либо использовать мой код).