Хранение разных объектов дочерних классов от общего родительского | c++
Имеется вот такие 3 класса :
class Item {
public:
std::string text;
};
class Item1 : Item {
public:
int number1;
Item1() {
this->text = "123";
this->number1 = 0;
}
};
class Item2 : Item {
public:
unsigned int number2;
Item2() {
this->text = "321";
this->number2 = 1000;
}
};
Проблема заключается в следующем:
std::vector<Item*> map = {};
Item1* i1 = new Item1();
Item2* i2 = new Item2();
map.push_back( i1, i2 );
Не удается хранить таким образом указатели на объекты дочернего класса, я читал решения данной проблемы и по идее должно работать, может я чего-то не понимаю или не так понял?
Если данная проблема решаема, то возникает следующий вопрос, как мне добраться до полей
map[0]->number1
и map[1]->number1
если их не существует в типе Item. Очень прошу помочь с данной проблемой
P.S. стандарт с++17