C++中数组的初始值设定项太多
Too many initializers for array in C++
我正试图在Visual C++中初始化一个数组。
在我的头文件中,我这样声明数组int pawnSquareTable[64];
在包含头文件的cpp文件中,我以以下方式初始化类的构造函数中的数组:
pawnSquareTable[64]={0,0,1,2.....64 values};
但是,VC++给了我一个Too many initializer values
错误。为什么会发生这种情况?
编辑:
红色的波浪线在数组的第二个元素下面。
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;
}
当构造函数中有代码pawnSquareTable[64]={0,0,1,2.....64 values};
时,实际上是在尝试设置单个元素pawnSquareTable[64]
(数组的第65个元素)的值。编译器希望得到一个int而不是初始值设定项列表,这就是错误的原因。
与其这样做,您应该在构造函数的初始化列表中初始化数组:
A::A() : pawnSquareTable{ 0, 1, 2 } //fill your values
{
}
相关文章:
- 指向多维数组C++的指针
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- 错误:字符数组的初始值设定项太多
- 使用递归模板动态分配的多维数组
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 如何从txt文件中读取多个不同长度的数组?
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 为什么我们将单个或多维数组的大小声明为常量值?
- 字符在多维数组中重复
- 如何将零填充的多维数组传递给 C++ 中的函数?
- C++:数组<>初始值设定项太多
- cpp 初始值设定项太多 - 数组中的结构中的结构
- 标准::字符串数组的初始值设定项太多
- C++-数组的初始化程序太多
- C++:为“char [4]”数组错误获取太多初始值设定项
- 结构和数组(“数组”的初始值设定项太多)C++
- 数组的初始化程序太多错误
- C++中数组的初始值设定项太多
- c++:数组,初始值设定项太多
- visualstudio-当给太多动态分配的数组赋值时程序崩溃-C++