Эта проблема связана с решенной проблемой в моем старом вопросе: C++ Вставка объекта 2D-массива в другой объект 2D-массива
Но это также создало для меня новую проблему. Пожалуйста, прочтите вопрос и решение по ссылке, чтобы понять мою проблему. Решение в предыдущем вопросе заключалось в том, чтобы превратить мою функцию-член данных в указатель на указатель, чтобы разрешить переход в другую функцию-член данных. Но при исправлении этого первая функция-член данных, которая является smallerArray.extractPiece(), теперь возвращает только адрес указателя на указатель, а не содержимое этих указателей. Мне нужно содержимое, чтобы моя вторая функция-член данных largerArray.extractArray(result) работала правильно, поскольку я пытаюсь запустить код и выдал ошибку окна, а не ошибку компиляции.
Кто-нибудь знает, как извлечь содержимое smallerArray.extractPiece() и вместо получения адреса, а есть ли у кого-нибудь другие методы создания объекта 2D-массива?





Прямо сейчас ваша проблема кажется немного недооцененной. Какого размера «кусок» вы ожидаете от меньшего массива и куда в большем массиве вы хотите его вставить?
void Grid::extractArray( int** arr )
{
for(int i = 0; i < xGrid ; ++i) {
for (int j = 0; j < yGrid ; ++j) {
squares[i][j] = arr[i][j];
}
}
}
В меньшем массиве int**arr не так много элементов, как в Grid.
xGrid и yGrid слишком велики, чтобы использовать их в качестве индексов для arr[][].
Вы должны передать весь меньший объект массива в функцию extractArray() и использовать размеры из этого объекта для функции копирования.
void Grid::extractArray( const Piece & piece)
{
for(int i = 0; i < piece.xGrid ; ++i) {
for (int j = 0; j < piece.yGrid ; ++j) {
squares[i][j] = arr[i][j];
}
}
}
Это может упростить задачу, если вы создадите объект или класс 2D-массива (или структуру)
class BaxMatrix {
public:
int m_Data[4][4];
}
немного поработав, вы можете построить динамические структуры или использовать структуры STL по желанию. Данные и ссылка на данные - это два разных животных. Лучше всего прояснить каждую из их ролей в своем мышлении, прежде чем двигаться дальше.