C++错误:太多的初始化值

问题描述:

我的数组有一个奇怪的错误。我宣布他们像这样: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'函数中声明这些数组才能在另一个函数中访问它们。最好在头文件中声明它们,并在设置函数中初始化它们。也许你应该把你的设置函数改为对象的构造函数。这将是这种情况下的最佳做法。 –

除了改变pitchPlayers范围,因为写在评论中, 有关声明后,改变了整个数组: 可以delclare另一个名为例如pitchPlayersFor3初始化数组。 最好声明它为staticconst。 然后您可以使用memmovepitchPlayersFor3复制到pitchPlayers