2017-01-20 4 views
0

3次元配列の2番目の位置にアクセスするのに問題があります。 を参照してくださいコード:位置2の3次元配列にアクセスする方法C++

int qtdMosquitos = 2500000; 

int altura = 500, largura = 500, i, j, k, qtdMosquitoPorCelula = qtdMosquitos /(altura*largura); 
long id = 1; 
Mosquito* mosquitos[qtdMosquitos][qtdMosquitos][qtdMosquitoPorCelula]; 
Mosquito* listaMosquitos[qtdMosquitoPorCelula]; 

for (i = 0; i < altura; i++) { 
    for (j = 0; j < largura; j++) { 
     for (k = 0; k < qtdMosquitoPorCelula; k++) { 
      Mosquito* mosquito = new Mosquito(); 
      mosquito->setId(id); 
      mosquito->setState("S"); 
      listaMosquitos[k] = mosquito; 
     } 
     mosquitos[i][j] = listaMosquitos; 
    } 
} 

次のエラーが表示さmosquitos[i][j] = listaMosquitos;ライン:

main.cpp|24|error: invalid array assignment| 

私が言うエラーを理解し、私は原因を見つけることができない、私たちはすでにと3Dマトリックスのインスタンスを作成しました単純な配列変数qtdMosquitoPorCelulaと同じ変数。

3Dアレイの値を設定してもらえますか? matrix[0][1] = arraySimples;

+0

あなたはあなたの行列で、[I、J] ''位置に配列全体を割り当てています。このようにすることはできません。配列をループして各要素をコピーする必要があります。 –

答えて

0

Cの配列は配列の最初の要素のポインタなので、したがって、コード

mosquitos[i][j] = listaMosquitos; 

は、メモリの問題の原因となり、コンパイル、それを禁止しますmosquitos[i][j][0]からlistaMosquitos[0]のポインタを割り当てることを意味します。 、我々は次のコードサンプルで同じことを行うことができますコードサンプルで

..... 
for (i = 0; i < altura; i++) { 
    for (j = 0; j < largura; j++) { 
     for (k = 0; k < qtdMosquitoPorCelula; k++) { 
      Mosquito* mosquito = new Mosquito(); 
      mosquito->setId(id); 
      mosquito->setState("S"); 
      listaMosquitos[k] = mosquito; 
      mosquitos[i][j][k] = mosquito; 
     } 
    } 
} 
関連する問題