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

Expected constant expression, cannot allocate an array of constant size 0

本文关键字:常量 小为 分配 数组 不能 表达式 不能分      更新时间:2023-10-16

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

我四处寻找,找到了多种解决方案,但没有一个适合我。当前代码如下所示:

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

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

似乎引起问题的那一行是最后一行。是什么导致了这一点,我如何解决它?

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

您可以通过使用std::vector而不是数组(有效大小)来修复此问题:

std::vector<Heltal*> htal(a.size() /*or whatever size you want*/);

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

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