无法使用常量变量初始化数组...为什么?

时间:2013-11-12 05:26:27

标签: c++ arrays constants

我对编程很新,我在使用const int初始化数组时遇到了麻烦。到目前为止,我的代码是:

int temp = 0;
temp += valuesVec.size();
int SIZE = temp; 
int valuesArray[SIZE];

我正在尝试使用与读取文件并存储所有值的向量相同数量的元素来创建数组。它给我的错误是:

Error   1   Expected constant expression.
Error   2   error C2466: cannot allocate an array of constant size 0    
Error   3   error C2133: 'valuesArray' : unknown size   
Error   4   IntelliSense: expression must have a constant value

所有错误都会导致:int valuesArray[SIZE]; 印花SIZE给了我1118的价值。

我知道我可能做了一些愚蠢的事情,可能忘记了一些基本规则,但......直到有人指出它,我才会倾注我的书。

2 个答案:

答案 0 :(得分:2)

静态数组的大小只能使用非零常量值指定。如果在编译时大小未知,那么你应该使用动态数组。

int * valuesArray = new int [SIZE];
...
delete[] valuesArray;

请确保使用正确的delete []运算符。

或者更好地使用std::vector

答案 1 :(得分:0)

SIZE不是编译时常量(至少除非valuesVec),因此您无法静态声明一个SIZE作为其大小的数组。

您可以尝试手动分配它:

int* valuesArray = new int[SIZE];

如果你还记得delete[]它。或者你可以简单地制作另一个载体:

std::vector<int> valuesArray(SIZE);