#include<iostream>
#include<stdio.h>
using namespace std;
class Test
{
private:
int array[]={0,2,4,6,8,10,12};//this line is the root cause of the error but why ?
public :
void compute();
};
void Test::compute()
{
int result =0;
for(int i=0;i<7;i++)
{
result += array[i];
}
cout<<result;
}
int main()
{
Test obj;
obj.compute();
return 0;
}
如果我将以上代码中的int array[]
替换为array[7]
,则程序将编译并运行并显示警告。
答案 0 :(得分:5)
与其他作用域中的数组不同,类中的数组无法通过其初始化程序确定大小。初始化程序只是语法糖,它告诉编译器使用什么初始化成员。那意味着你真正拥有的是
class Test
{
private:
int array[];
public :
void compute();
Test(): array({0,2,4,6,8,10,12}) {}
};
无法使用,因为数组没有大小信息。
当您指定尺寸时,它可以工作,因为现在实际上有一个有效的尺寸。如果你想拥有类似的东西
int array[]={0,2,4,6,8,10,12};
在课堂上然后使用std::vector
代替
std::vector<int> array={0,2,4,6,8,10,12};