次の方法で2D配列を作成しました。
int** map_array = (int**)malloc(sizeof(yy_value*xx_value));
位置に値を割り当てようとすると:
map_array[y*xx_value+x] = 5;
次のエラーが発生します:
Assigning to 'int *' from incompatible type 'int'
私はここで何が間違っているのですか?
変化する:
int** map_array = (int**)malloc(sizeof(yy_value*xx_value));
に:
int* map_array = (int*)malloc(yy_value*xx_value*sizeof(map_array[0]));
説明:ここでは、「フラット化された」2D配列を割り当てています。ここでは、実際の2D配列ではなく、独自の1Dインデックスを計算します。また、mallocに渡されたサイズが正しくありませんでした。
正当な理由がない限り、C++プログラムでmallocを使用するべきではないことに注意してください。
または、2Dアレイを次のように使用することもできます。
int **map_array = (int**)malloc(xx_value*sizeof(int*))
for (i = 0; i < xx_value; i++) {
map_array[i] = (int*)malloc(yy_value*sizeof(int))
}
以下を使用して要素にアクセスします。
map_array[x][y] = 5;