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

Для того чтобы передать двойной массив в подкласс из класса, сохранив адреса массива, следует использовать указатель на массив в качестве члена класса, который будет хранить адрес первого элемента двумерного массива.

Вот пример кода на языке C++, который демонстрирует данную концепцию:

#include <iostream>

class BaseClass {
protected:
    double(*arr)[3]; // указатель на массив
public:
    BaseClass(double(*a)[3]) : arr(a) {} // конструктор класса
    void printArray() {
        std::cout << "Array elements: " << std::endl;
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                std::cout << arr[i][j] << " ";
            }
            std::cout << std::endl;
        }
    }
};

class SubClass : public BaseClass {
public:
    SubClass(double(*a)[3]) : BaseClass(a) {} // конструктор подкласса
};

int main() {
    double array[2][3] = { { 1.1, 2.2, 3.3 },{ 4.4, 5.5, 6.6 } }; // исходный двумерный массив
    SubClass subClass(array); // создание объекта подкласса, передача массива

    subClass.printArray(); // вызов метода, который выводит элементы массива
    return 0;
}

В этом примере у нас есть два класса - BaseClass и SubClass. BaseClass имеет защищенный член данных arr, который является указателем на двумерный массив с размером [2][3]. В конструкторе BaseClass мы инициализируем указатель arr значением, которое передается в качестве аргумента конструктора.

SubClass является подклассом BaseClass. Мы передаем указатель arr базовому классу, вызывая его конструктор с помощью инициализации члена данных базовой части SubClass.

В функции main мы создаем и инициализируем двумерный массив array. Затем мы создаем экземпляр подкласса SubClass и передаем ему указатель на массив array. Затем мы вызываем метод printArray, который выводит элементы массива.

Таким образом, двойной массив успешно передается в подкласс из класса, и адреса массива сохраняются для использования в подклассе.