Ваш массив разрезает объекты , поэтому в массиве нет derived
объектов, только Base
объектов. Полиморфизм работает только при доступе к объектам через указатель или ссылку, поэтому вам нужно изменить массив, чтобы он содержал Base*
указатели:
class Parking {
static const int MAX_SPOTS_NO = 100;
Base* B[MAX_SPOTS_NO];
void parkVehicle() const;
};
void parkVehicle() {
//call read from the derived class
...
B[index]->read();
...
}
Затем вы можете хранить derived
объекты в массиве по мере необходимости, например, 1 :
derived *d = new derived;
B[index] = d;
Или:
derived d;
B[index] = &d;
1: вы не предоставили достаточно кода, чтобы точно показать, КАК вам лучше всего создавать, управлять и хранить derived
объектов.