2017-04-18 157 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 
    }; 
} 

然後我對數組的第二行的太多初始化值錯誤,當我想改變我的數組中的內容,像這樣:

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++相當陌生,所以它可能是某處的菜鳥錯誤。

+7

'setup'聲明瞭兩個數組,它們的生存時間僅限於'setup'函數,所以它沒用。 – aschepler

+2

在你的第二個代碼片段中,你不能初始化或分配到這樣的數組。也許你應該將數組聲明爲成員變量,並且可以以某種方式或通過構造函數初始化程序列表或通過從本地數組中複製來在構造函數中初始化它們? –

+1

你必須從'setup'函數中聲明這些數組才能在另一個函數中訪問它們。最好在頭文件中聲明它們,並在設置函數中初始化它們。也許你應該把你的設置函數改爲對象的構造函數。這將是這種情況下的最佳做法。 –

回答

0

除了改變pitchPlayers範圍,因爲寫在評論中, 有關聲明後,改變了整個數組: 可以delclare另一個名爲例如pitchPlayersFor3初始化數組。 最好聲明它爲staticconst。 然後您可以使用memmovepitchPlayersFor3複製到pitchPlayers