C++ 初始值设定项值c+太多+;
有人能解释一下为什么我会出现以下编译器错误: 错误:“std::array”的初始值设定项太多C++ 初始值设定项值c+太多+;,c++,matrix,multidimensional-array,compiler-errors,C++,Matrix,Multidimensional Array,Compiler Errors,有人能解释一下为什么我会出现以下编译器错误: 错误:“std::array”的初始值设定项太多 #包括 #包括 使用名称空间std; 枚举状态 { 没有一个 白色 黑色 }; int main() { 数组初始值={ {State::NONE,State::NONE}, {State::WHITE,State::WHITE}, {State::NONE,State::NONE}, {State::NONE,State::NONE}, {State::NONE,State::NONE}, {Sta
#包括
#包括
使用名称空间std;
枚举状态
{
没有一个
白色
黑色
};
int main()
{
数组初始值={
{State::NONE,State::NONE},
{State::WHITE,State::WHITE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::BLACK,State::BLACK},
{State::NONE,State::NONE}
};
返回0;
}
您可以使用普通数组,如下所示:
State ini[8][2] = {
{ State::NONE, State::NONE },
{ State::WHITE, State::WHITE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::BLACK, State::BLACK },
{ State::NONE, State::NONE }
};
或者,要修复代码,请添加一对括号:
array<array<State, 2>, 8> initial = { {
{State::NONE, State::NONE },
{ State::WHITE, State::WHITE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::BLACK, State::BLACK },
{ State::NONE, State::NONE }
} };
array initial={{
{State::NONE,State::NONE},
{State::WHITE,State::WHITE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::NONE,State::NONE},
{State::BLACK,State::BLACK},
{State::NONE,State::NONE}
} };
您只需要额外的一对。有趣的是,clang直接调用memset
将数组设为null,然后设置非零字段。我也检查了gcc,它设置了每个单独的字段,正如您最可能期望的那样。
array<array<State, 2>, 8> initial = { {
{State::NONE, State::NONE },
{ State::WHITE, State::WHITE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::NONE, State::NONE },
{ State::BLACK, State::BLACK },
{ State::NONE, State::NONE }
} };