C++ 数组声明上的编译器错误?
我如何着手修复这三个错误C++ 数组声明上的编译器错误?,c++,C++,我如何着手修复这三个错误 错误C2057:应为常量表达式 错误C2466:无法分配常量大小为0的数组 错误C2133:“随机票证”:未知大小 有问题但不喜欢[门票]的队伍 int randomTickets[tickets][SIZE]; 提前感谢您的帮助 错误C2057:应为常量表达式 您不能这样声明randomTickets,因为数组的维度需要在编译时已知票证不是编译时常量,因此出现错误。考虑使用: 其他错误可以通过修复此错误来解决。变量tickets不是常量表达式,这就是原因 更改
- 错误C2057:应为常量表达式
- 错误C2466:无法分配常量大小为0的数组
- 错误C2133:“随机票证”:未知大小
int randomTickets[tickets][SIZE];
提前感谢您的帮助 错误C2057:应为常量表达式 您不能这样声明
randomTickets
,因为数组的维度需要在编译时已知<代码>票证不是编译时常量,因此出现错误。考虑使用:
其他错误可以通过修复此错误来解决。变量
tickets
不是常量表达式,这就是原因
更改int-randomTickets[tickets][SIZE]
如下:
Array* randomTickets = new Array[tickets];
在函数main
之外,声明以下类型:
typedef int Array[SIZE];
从这一点开始,您可以将变量
randomTickets
用作“普通”二维数组,只是不要忘记delete[]randomTickets
完成后…将tickets
设置为一个常量表达式,并确保其值大于零。能否解释错误消息的哪一部分您不理解?“期望常数表达式”非常简单。是因为你不知道它在哪里?(您似乎知道,因为您将它隔离到了tickets
)是不是您不知道常量表达式是什么?std::vector randomTickets(tickets)代码>(雷蒙德的评论为+1)。
std::vector<std::array<int, SIZE>> randomTickets(tickets);
Array* randomTickets = new Array[tickets];
typedef int Array[SIZE];