预期的常量表达式,不能分配常量大小为0的数组
Expected constant expression, cannot allocate an array of constant size 0
我试图创建一个对象数组,如果我手动输入数组大小,它就可以正常工作,但每当它试图从函数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);
相关文章:
- 如何将变量内容常量转换为 std::array 的大小?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 调用构造函数与将内联常量定义为默认参数
- 将结构C++成员从非常量转换为常量
- 警告:ISO C++禁止将字符串常量转换为'char*' [-Wwrite-strings]
- 为什么无法将常量 X 转换为 X &?
- 将字符串常量转换为char
- 错误:常量类型为c++的单元化成员
- 搜索一组点,其长度总和最小为矩形.算法是什么
- 警告:ISO C++禁止将静态“constexpr char*”数据成员的字符串常量转换为“char*”
- 错误C2662无法从常量转换为引用
- Const_cast允许将常量修改为导致常量的路径
- 如何使用 z3 c++ API 将常量声明为非重复常量
- 使用常量引用为变量设置别名
- 如何在 C 中将多字符常量转换为整数
- 从字符串常量转换为字符*
- 检查两个常量是否为空
- boost序列化错误C4308:负整数常量转换为无符号类型
- 不赞成从字符串常量转换为“char*”[-Wwrite strings]
- C++-不赞成在第三方标头中从字符串常量转换为“char*”