2d数组中的预期常量

Jus*_*ahn 0 c++ arrays

double rainPerMonth(const int YEARS)
{
   int monthYear[MONTHS][YEARS];
   // ...
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio在数组声明下面显示了一条波浪线,说YEARS我在创建数组时必须是常量.这是一个IDE问题,因为该变量尚未初始化,或者我写错了吗?

MONTHS 已经在全球宣布.

Mik*_*our 5

数组大小必须是常量表达式 - 即编译时已知的值.(有些编译器提供C风格的可变长度数组作为非标准扩展,但我不认为Visual C++会这样做.即使它确实如此,最好不要依赖这样的扩展.)

函数参数在编译时是未知的,因此不能用作数组大小.你最好的选择就在这里

std::vector<std::array<int, MONTHS>> monthYear(YEARS);
Run Code Online (Sandbox Code Playgroud)