2012-02-10 12 views
2

以下のC++コード:エラー: `INTの割り当てに互換性のない型 'INT' [2]'

int iBlocks[9][2]; 
class System{ 
    void setBlocks(){ 
    int iUCtr = 0; 
    int iUYCtr = 105; 
    while(1){ 
     int iUXCtr = 180; 
     while(1){ 
     iBlocks[iUCtr] = 0;   //error happens here. 
     iBlocks[iUCtr][0] = iUXCtr; 
     iBlocks[iUCtr][1] = iUYCtr; 
     iUCtr += 1; 
     iUXCtr += 120; 
     if(iUXCtr>420) break; 
     } 
     iUYCtr += 120; 
     if(iUYCtr>345) break; 
    } 
    } 
    public: 
    System(){ 
     setBlocks(); 
     cout << "Block settings set..." << endl; 
    } 
}; 

このエラーを生成++のMinGWのG:

incompatible types in assignment of `int' to `int[2]' 

問題がiBlocks[iUCtr] = 0;であります。

iBlocksをポインタに変更したところ、それは機能しました。誰かがフードの下で何が起こっているか私に説明することはできますか?

+0

その行が間違っています。あなたは何をしようとしているのですか?あなたは単にそれを削除することができるかもしれません。 –

+0

さて、あなたは何をしているのですか?あなたが発見したように、コードはそのことをしないので、コードからはわかりません。 'iBlocks [iUCtr] = 0;' iBlocks [iUCtr]は 'int'の配列であり、' 0'はただ一つの 'int'なので、間違っています。 –

+0

そのような配列にアクセスすることはできません。あなたは何をしようとしているのですか? –

答えて

1

iBlocks[iUCtr] = 0;は必須ではありません。消して。

2

int [2]の配列に値0を代入しようとします。 次の2行のコードでは、項目が既に埋め込まれているため、完全な行を削除できます。

3

"0"の値を持つ行列の "行"全体を設定しようとしています。コンパイラはあなたにそれをさせません。

おそらく、あなたはiBlocksが行列であるから、何が必要でしょうが、このようなものである、第2の指標を逃した:

iBlocks[iUCtr][SecondIndex] = 0 

代わりにあなたがゼロで行列全体を初期化しようとしている場合、に関数を書きますそれを行う。

+0

それは意味がありません。彼はすでにサブアレイの両方の要素をすぐ後で埋めます。私は彼が "nullポインタを設定しようとしている"と思っています。なぜなら、誰かが彼に向かっていて、 "配列はちょうどポインタです" –

関連する問題