Как создать массив указателей на объекты базового класса, которым присвоить адреса объектов производных класса?

Для создания массива указателей на объекты базового класса, которым присвоены адреса объектов производных классов в языке C++, вы можете использовать следующий подход.

  1. Определите базовый класс:
class BaseClass {
public:
    virtual void someFunction() = 0;
    // ...
};
  1. Определите производные классы:
class DerivedClass1 : public BaseClass {
public:
    void someFunction() override {
        // Реализация функции
    }
    // ...
};

class DerivedClass2 : public BaseClass {
public:
    void someFunction() override {
        // Реализация функции
    }
    // ...
};
  1. Создайте массив указателей на объекты базового класса и присвойте им адреса объектов производных классов:
int main() {
    const int arraySize = 2;
    BaseClass* array[arraySize];

    array[0] = new DerivedClass1();
    array[1] = new DerivedClass2();

    // ...
}
  1. После того, как массив указателей был создан и адреса объектов были присвоены, вы можете обращаться к функциям и данным объектов через указатели:
    // Вызов функции у объекта DerivedClass1 через указатель
    array[0]->someFunction();
  1. Не забывайте освобождать память, выделенную для объектов, при помощи оператора delete:
    // Освобождение памяти
    for (int i = 0; i < arraySize; ++i) {
        delete array[i];
    }

Таким образом вы создали массив указателей на объекты базового класса и присвоили им адреса объектов производных классов. Благодаря полиморфизму в C++, виртуальные функции базового класса могут вызываться для объектов производных классов через указатели базового класса.