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

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

1. Определите базовый класс:

class BaseClass {
public:
    virtual void someFunction() = 0;
    // ...
};

2. Определите производные классы:

class DerivedClass1 : public BaseClass {
public:
    void someFunction() override {
        // Реализация функции
    }
    // ...
};

class DerivedClass2 : public BaseClass {
public:
    void someFunction() override {
        // Реализация функции
    }
    // ...
};

3. Создайте массив указателей на объекты базового класса и присвойте им адреса объектов производных классов:

int main() {
    const int arraySize = 2;
    BaseClass* array[arraySize];

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

    // ...
}

4. После того, как массив указателей был создан и адреса объектов были присвоены, вы можете обращаться к функциям и данным объектов через указатели:

    // Вызов функции у объекта DerivedClass1 через указатель
    array[0]->someFunction();

5. Не забывайте освобождать память, выделенную для объектов, при помощи оператора delete:

    // Освобождение памяти
    for (int i = 0; i < arraySize; ++i) {
        delete array[i];
    }

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