Я предлагаю вам попробовать выделить динамический c 2D массив (в одном приложении) самостоятельно, прежде чем смотреть на остальную часть моего ответа.
Подсказка: используйте указатель на указатель на удерживайте массив.
Я предполагаю, что вы хотите создать новый класс (пусть это будет dynArr_2d), тогда вам, вероятно, потребуется внести следующие изменения: -
• Создать 'data' указатель на указатель на int.
• Замените элемент данных size размером «size» с двумя элементами данных типа int (например, строки и столбцы) для хранения измерений двумерного массива.
• Реализация конструктора с двумя аргументами (который заменяет конструктор с одним аргументом) должна выглядеть следующим образом: -
dynArr_2d::dynArr_2d(int r, int c) {
rows = r;
cols = c;
data = new int*[r]; //pointer to array of pointers
for (int i = 0; i < r; i++) {
data[i] = new int[c]; //each pointer in the array points to an array
}
} //end constructor
Объяснение для конструктора: -
Вы знаете, что указатель на определенный тип может быть указателем на массив этого типа, и вы также знаете, что 2D-массив является массивом массивов.
Имея это в виду, теперь мы можем рассматривать 'data' как указатель на (pointer-to-int), т.е. может быть указателем на массив (p указатели на int), и каждый указатель в этом массиве может, в свою очередь, указывать на массив целых чисел.
• Теперь, когда у вас выделен 2D-массив, остальные изменения будут довольно простыми.