我正在尝试创建一个对象数组,如果我手动输入数组大小就可以正常工作,但每当它试图从函数args获取信息时它会给出错误“预期的常量表达式”和“无法分配”一个常量大小为0“的数组。
我已经四处寻找并找到了多种解决方案,但它们都不适用于我。代码目前看起来像这样:
Array::Array(int in, int min, int max)
{
size = in;
Heltal *htal[size];
}
大小整数和htal对象在头文件中定义。
似乎导致问题的一行是最后一行。 是什么导致这种情况以及如何解决?
答案 0 :(得分:6)
C ++中不支持VLA(可变长度数组)。即使它们是a
,vector
也是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);