我正在尝试在Visual C ++中初始化一个数组。
在我的头文件中,我正在声明这样的数组。
int pawnSquareTable[64];
在我包含头文件的cpp文件中,我以这种方式在类的构造函数中初始化数组:
pawnSquareTable[64]={0,0,1,2.....64 values};
然而,VC ++给我一个Too many initializer values
错误。为什么会这样?
编辑:
红色波浪线突出了数组的第二个元素。
答案 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;
}