C ++ Объявить массив, значение размера которого из константного массива

Я пытаюсь определить стек в стиле c-style, размер которого взят из const-массива и известен во время компиляции.

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

Это не удается. Как это можно исправить?

2

Решение

«массив, размер которого взят из константного массива и известен в время компиляции«

С C ++ 11 вы можете иметь:

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

использование -std=c++11 или же -std=c++0x Скомпилировать

3

Другие решения

Некоторые варианты (с различной степенью популярности):

  1. Использовать constexpr (не поддерживается в Visual Studio)
  2. Используйте вектор
  3. Использовать динамическое распределение
  4. Использовать const int (C99 или новее или C ++)
  5. Используйте enum
  6. Используйте MACRO для определения размера (так как он известен во время компиляции)
2

Размеры массива C ++ должны быть константными выражениями, а не только постоянными данными.
Данные массива, даже если const, не являются константным выражением.

размер массива и константа

1