2017-12-21 16 views
-2

私は新しい2次元配列に再構成しようとしている2次元配列を持っています。すなわちreinterpret_castを使用した場合の不明なエラー

 int array[3][2]; 
     int r = 3; 
     int c = 2; 
     for(int i = 0; i < 3; i++) { 
      for(int j = 0; j < 2; j++) { 
       array[i][j] = 1; 
      } 
     } 

    int(*array_pointer)[r][c] = reinterpret_cast<int(*)[r][c]>(array); 

プログラムはこれとまったく同じではありませんが、主なポイントを提供します。私はint型のRとCに渡す何らかの理由で私はこのエラーを取得する:

cannot initialize a variable of type 'int (*)[r][c]' with an rvalue of type 'int (*)[r][c]' 

は今のconst int型にint型を作るか、単にだけでなく3と2作品にそれらを変更します。しかし、私はそれらをintとしてキャストする必要があります。どのようにこの問題を解決するか?

+0

これは私のためにコンパイルします。 –

+0

@JakeFreemanさて、どのIDEを使用していますか?バイナリパーサーは何に設定されていますか? – Wolfy

+0

g ++ 4.8.2からC9 IDEを介して。 –

答えて

3

まあ、最初:あなたは再書き込みする必要があり、鋳造で変数を使用cannt:

int(*array_pointer)[r][c] = reinterpret_cast<int(*)[r][c]>(array); 

へ:

int(*array_pointer)[3][2] = reinterpret_cast<int(*)[3][2]>(array); 

あなたは多分、より柔軟なまたは動的なものを使用する必要がある場合use std :: vectorをご検討ください

+0

キャスト時に変数を使用できないのはなぜですか?私がconst intと言うと動作します。 – Wolfy

+0

はい、しかし、実際には変数ではありません。もっと柔軟にしたいのなら、それを使うことはできません。 r&cの動的値が必要な場合は、(たとえば)std :: vector –

関連する問題