0

この問題は、私の古い質問で解決された問題からのものです。これは、 C++ Inserting 2D array Object into another 2D array Objectからのものです。

しかし、私にとって新しい問題も引き起こしました。私の問題を理解するには、リンクの質問と解決策を読んでください。前の質問の解決策は、データ メンバー関数をポインターへのポインターにして、他のデータ メンバー関数へのパスを許可することでした。しかし、それを修正している間、最初のデータメンバー関数smallerArray.extractPiece()は、ポインターへのポインターのアドレスのみを返し、それらのポインターの内容は返しません。コードを実行しようとすると、コンパイル エラーではなくウィンドウ エラーが発生したため、2 番目のデータ メンバー関数largerArray.extractArray(result)が正しく機能するためにはコンテンツが必要です。

アドレスを取得する代わりに andのコンテンツを抽出する方法を知っているsmallerArray.extractPiece()人はいますか?2D配列オブジェクトを作成する他の方法はありませんか?

4

3 に答える 3

1
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には、 ほど多くの要素がありませんGridxGridyGridは大きすぎて のインデックスとして使用できません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];
    }
  }
}
于 2008-12-27T11:03:38.417 に答える
0

2D配列オブジェクトまたはクラス(または構造体)を作成すると、作業が簡単になる場合があります。

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

少しの作業で、動的構造を構築したり、必要に応じてSTL構造を使用したりできます。データとデータへの参照は2つの異なる動物です。先に進む前に、思考におけるそれぞれの役割を明確にすることが最善です。

于 2009-01-05T16:50:10.497 に答える
0

現在、あなたの問題は少し過小評価されているようです。小さい方の配列からどのくらいの大きさの「ピース」が期待されますか?大きい方の配列のどこに挿入しますか?

于 2008-12-27T10:58:39.207 に答える