LateBinding с динамической памятью

У меня есть базовые и производные классы ниже, которые связаны с полиморфизмом (Latebinding):

 class Base
{
....
};

class Derive:public Base
{
....
};

int main()
{
int n;
cin>>n;
Base *pt;
pt=new Derive[n];

for(int i=0;i<n;i++)
pt[i].Input();
}

Пока я вводил первый индекс pt [0], все нормально, но в index [1] программа вынуждена закрываться. Любая идея ?? Спасибо заранее.

1

Решение

Массив Base это не массив Derived, Derived экземпляр может быть больше, чем Base, а затем адресные вычисления становятся бесполезными, когда массив обрабатывается как массив Base, По этой причине стандарт определяет Неопределенное поведение в этом случае.

Вместо этого вы можете использовать массив указателей на Base,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]