C ++声明大小值来自const数组的数组

时间:2013-09-24 14:52:09

标签: c++ arrays const constexpr compile-time-constant

我正在尝试定义一个堆栈c风格的数组,其大小取自const数组,并且在编译时已知。

const int size[2]={100, 100};
int ar[size[0]]; //error: expression must have a constant value

失败了。如何解决?

3 个答案:

答案 0 :(得分:3)

"数组,其大小取自const数组,在编译时"

中已知

使用C ++ 11,您可以:

constexpr int size[2]={100, 100}; // size[0] is Compile-time constant

使用-std=c++11-std=c++0x进行编译

答案 1 :(得分:2)

一些选项(具有不同程度的受欢迎程度):

  1. 使用constexpr(Visual Studio不支持)
  2. 使用矢量
  3. 使用动态分配
  4. 使用const int(C99或更高版本或C ++)
  5. 使用enum
  6. 使用MACRO定义大小(因为它在编译时已知)

答案 2 :(得分:1)

  

C ++数组大小必须是常量表达式,而不仅仅是常量数据。   数组数据,即使是const,也不是常量表达式。

array size and const