Переформатировал код под себя. Не могу воспринимать египетские скобки.
void Printer::addM(Moved obj)
{
Moved* tmp = new Moved[mSize];
for (int i = 0; i < mSize; i++)
{
tmp[i] = objs[i];
}
objs = new Moved[++mSize];
for (int i = 0; i < mSize - 1; i++)
{
objs[i] = tmp[i];
}
objs[mSize - 1] = obj;
Car mytmp; // для теста
cout << mytmp.getType() << endl; // для теста
cout << objs[mSize-1].getType() << endl;
Sleep(100);
}
У вас две проблемы. Во-первых вы зачем-то переизобрели std::vector, поэтому вам приходится писать примерно в 5 раз больше кода чем надо.
Во-вторых, вам надо хранить не объекты Moved, а указатели на них, и тогда ваша гомологическая иерархия классов заработает.
Как я и говорил выше, addM работает не так, как вы ожидаете. Когда вы ее вызываете, у вас происходит создание Moved на основе Car или Walker, что исключает полиморфизм.