0

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

我四处搜索并找到了多种解决方案,但没有一个对我有用。代码当前如下所示:

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

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

似乎导致问题的行是最后一行。这是什么原因造成的,我该如何解决?

4

2 回答 2

6

C++ 不支持 VLA(可变长度数组)。即使他们是,a是一个vector所以Heltal *htal[a];没有意义。

您可以使用 anstd::vector而不是数组(有效大小)来解决此问题:

std::vector<Heltal*> htal(a.size() /*or whatever size you want*/);
于 2013-01-10T14:47:29.963 回答
1

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

std::vector<Heltal *> htal(size);
于 2013-01-10T14:53:42.647 回答