2017-04-18 30 views
0

私の配列に異常なエラーがあります。私はそうのようにそれらを宣言している:私はそうのような私の配列の内容を変更したいときC++エラー:初期設定値が多すぎます

void Interface::setup(){ 
    char pitchPlayers[9][26] = { 
     { 201, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 187 }, //1 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //2 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', 001, '1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', 001, ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //3 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //4 
     { 186, ' ', 001, ' ', ' ', ' ', ' ', 001, '2', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2', 001, ' ', ' ', ' ', ' ', 001, ' ', 186 }, //5 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //6 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', 001, '3', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', 001, ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //7 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //8 
     { 200, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 188 }, //9 
    }; 

    char dice[9][9] = { 
     { 201, 205, 205, 205, 205, 205, 205, 205, 187 }, //1 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //2 
     { 186, ' ', 254, ' ', ' ', ' ', ' ', ' ', 186 }, //3 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //4 
     { 186, ' ', ' ', ' ', 254, ' ', ' ', ' ', 186 }, //5 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //6 
     { 186, ' ', ' ', ' ', ' ', ' ', 254, ' ', 186 }, //7 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //8 
     { 200, 205, 205, 205, 205, 205, 205, 205, 188 }, //9 
    }; 
} 

は、それから私は、配列の2行目にあまりにも多くの初期化子値の誤差があります

if (numberOfPlayers == 3) { 
    pitchPlayers[9][26] = { 
     { 201, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 187 }, //1 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //2 - this line 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', 001, '1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', 001, ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //3 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //4 
     { 186, ' ', 001, ' ', ' ', ' ', ' ', 001, '2', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2', 001, ' ', ' ', ' ', ' ', 001, ' ', 186 }, //5 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //6 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', 001, '3', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', 001, ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //7 
     { 186, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 186 }, //8 
     { 200, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 188 }, //9 
    }; 

    for (int x = 0; x < 9; x++) { 
     for (int y = 0; y < 26; y++) { 
      cout << pitchPlayers[x][y];// cout << "X"; 
     } 
     cout << endl; 
    } 
    cout << endl; 
} 

私はヘッダーファイルなどで正しく宣言しています。私はその問題が何かを見つけることができません。私はC++にはかなり新しいので、どこか新人のエラーかもしれません。宣言の後に配列全体を変更に関するコメントに書かれたようpitchPlayersの範囲を変更することに加えて

+7

'setup'は、' setup'関数に制限されている2つの配列を宣言しているので、無駄です。 – aschepler

+2

2番目のコードスニペットでは、そのような配列を初期化または割り当てることはできません。おそらく、配列をメンバ変数として宣言し、コンストラクタ内でそれらをある方法または別の方法で初期化するか(コンストラクタの初期化子リストを使用するか、ローカル配列からコピーするか) –

+1

これらの配列を 'setup'関数から宣言して、別の関数でそれらの配列にアクセスする必要があります。ヘッダーファイルでそれらを宣言し、セットアップ関数で初期化することが最善の方法です。おそらく、セットアップ関数をオブジェクトのコンストラクタに変更するだけでよいでしょう。この場合、これがベストプラクティスになります。 –

答えて

0

、 : あなたは一例pitchPlayersFor3のためにと呼ばれる別の初期化配列をdelclareすることができます。 好ましくは、staticconstと宣言してください。 memmoveを使用してpitchPlayersFor3からpitchPlayersにコピーできます。

関連する問題