有人可以解释为什么我遇到以下编译器错误:
错误:‘std::array ,8>的初始化程序过多

#include <iostream>
#include <array>

using namespace std;

enum State
{
  NONE,
  WHITE,
  BLACK
};


int main()
{

  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 }
  };

  return 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 }
    } };

07-25 23:34
查看更多