期望的常量表达式,不能分配一个常量大小为0的数组

时间:2013-01-10 14:46:30

标签: c++ arrays function

我正在尝试创建一个对象数组,如果我手动输入数组大小就可以正常工作,但每当它试图从函数args获取信息时它会给出错误“预期的常量表达式”和“无法分配”一个常量大小为0“的数组。

我已经四处寻找并找到了多种解决方案,但它们都不适用于我。代码目前看起来像这样:

Array::Array(int in, int min, int max) 
{
    size = in;
    Heltal *htal[size];
}

大小整数和htal对象在头文件中定义。

似乎导致问题的一行是最后一行。 是什么导致这种情况以及如何解决?

2 个答案:

答案 0 :(得分:6)

C ++中不支持VLA(可变长度数组)。即使它们是avector也是Heltal *htal[a];,所以std::vector没有意义。

您可以使用std::vector<Heltal*> htal(a.size() /*or whatever size you want*/); 而不是数组(有效大小)来解决此问题:

{{1}}

答案 1 :(得分:1)

数组的大小必须是编译时常量,而size不是常量。您需要动态分配数组:

std::vector<Heltal *> htal(size);