C++ 2DArray Objects; Указатели и проблемы с массивами

Эта проблема связана с решенной проблемой в моем старом вопросе: C++ Вставка объекта 2D-массива в другой объект 2D-массива

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

Кто-нибудь знает, как извлечь содержимое smallerArray.extractPiece() и вместо получения адреса, а есть ли у кого-нибудь другие методы создания объекта 2D-массива?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
798
3

Ответы 3

Прямо сейчас ваша проблема кажется немного недооцененной. Какого размера «кусок» вы ожидаете от меньшего массива и куда в большем массиве вы хотите его вставить?

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 по желанию. Данные и ссылка на данные - это два разных животных. Лучше всего прояснить каждую из их ролей в своем мышлении, прежде чем двигаться дальше.

Другие вопросы по теме