C ++中数组的初始化程序太多

时间:2014-10-25 14:44:44

标签: c++ arrays

我正在尝试在Visual C ++中初始化一个数组。

在我的头文件中,我正在声明这样的数组。
int pawnSquareTable[64];

在我包含头文件的cpp文件中,我以这种方式在类的构造函数中初始化数组:

pawnSquareTable[64]={0,0,1,2.....64 values};

然而,VC ++给我一个Too many initializer values错误。为什么会这样?

编辑:
红色波浪线突出了数组的第二个元素。

2 个答案:

答案 0 :(得分:2)

如果构造函数中包含代码pawnSquareTable[64]={0,0,1,2.....64 values};,则实际上是在尝试设置单个元素pawnSquareTable[64]的值(数组的第65个元素)。编译器期望得到一个int而不是一个初始化列表,这就是错误的原因。

您应该在构造函数的初始化列表中初始化数组,而不是这样做:

A::A() : pawnSquareTable{ 0, 1, 2 } //fill your values
{
}

答案 1 :(得分:1)

A::A()
    // : pawnSquareTable{1,2,3,4} // this would compile in clang/gcc
{
    // for MSVC, instead do this
    int* p = pawnSquareTable;
    for( int i : {1,2,3,4} ) // <- values here
        *p++=i;
}