C ++ 2DArray Objects; Указатели и проблемы с массивами - PullRequest
0 голосов
/ 27 декабря 2008

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

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

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

Ответы [ 3 ]

1 голос
/ 27 декабря 2008
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];
    }
  }
}
0 голосов
/ 05 января 2009

Это может упростить задачу, если вы создадите объект или класс 2D-массива (или структуру)

class BaxMatrix {
public:
  int m_Data[4][4];
}

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

0 голосов
/ 27 декабря 2008

В данный момент ваша проблема, похоже, немного не указана. Насколько большой «кусок» вы ожидаете от меньшего массива и куда в больший массив вы хотите вставить его?

...