C++ C++;

C++ C++;,c++,arrays,C++,Arrays,我尝试在VisualC++中初始化数组。 在头文件中,我这样声明数组。 int-pawnSquareTable[64] 在包含头文件的cpp文件中,我以以下方式在类的构造函数中初始化数组: pawnSquareTable[64]={0,0,1,2..64个值} 然而,VC++给了我一个太多初始化值的错误。为什么会这样 编辑: 红色的波形线在数组的第二个元素下面加下划线。当您有代码pawnSquareTable[64]={0,0,1,2…..64个值}在构造函数中,实际上您正在尝试为单个元素paw

我尝试在VisualC++中初始化数组。 在头文件中,我这样声明数组。
int-pawnSquareTable[64]

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

pawnSquareTable[64]={0,0,1,2..64个值}

然而,VC++给了我一个
太多初始化值的错误。为什么会这样

编辑:

红色的波形线在数组的第二个元素下面加下划线。

当您有代码
pawnSquareTable[64]={0,0,1,2…..64个值}
在构造函数中,实际上您正在尝试为单个元素
pawnSquareTable[64]
(数组的第65个元素)设置值。编译器希望得到一个int而不是初始值设定项列表,这就是错误的原因

您应该在构造函数的初始化列表中初始化数组,而不是执行此操作:

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

当您有代码
pawnSquareTable[64]={0,0,1,2…..64个值}
在构造函数中,实际上您正在尝试为单个元素
pawnSquareTable[64]
(数组的第65个元素)设置值。编译器希望得到一个int而不是初始值设定项列表,这就是错误的原因

您应该在构造函数的初始化列表中初始化数组,而不是执行此操作:

A::A() : pawnSquareTable{ 0, 1, 2 } //fill your values
{
}
A::A()
//:pawnSquareTable{1,2,3,4}//这将在clang/gcc中编译
{
//对于MSVC,请改为这样做
int*p=典当四分之一;
对于(inti:{1,2,3,4})/
A::A()
//:pawnSquareTable{1,2,3,4}//这将在clang/gcc中编译
{
//对于MSVC,请改为这样做
int*p=典当四分之一;

对于(int i:{1,2,3,4})//看起来您正试图分配给数组。请发布一个MCVE。什么是MCVE?我不知道。是的,我正在尝试在构造函数中分配值。您的数组大小是
64
,您可能正在初始化它更多的元素。至于您的问题,完整的声明是什么?看起来您正试图分配给arr是的。请发布一个MVE。MCVE是什么?我不知道。我正在尝试在构造函数中赋值。你的数组大小是“代码>64”/代码。你可能会初始化更多元素。至于你的问题,什么是完整的声明?不,那是第六十五个元素。他使用VisualC++。它不支持显式初始化器。R ARRAISI需要在5-6个数组中初始化,5个常量变量。如果把它们放在初始化列表中,它看起来会很丑陋。还有其他方法吗?不,那是第六十五个元素。他使用Visual C++。它不支持显式初始化器,ARRAYSI需要初始化5-6个数组,和5个常量变量。我把它们放在初始化列表中。还有其他方法吗?