объект переменного размера не может быть инициализирован

У меня есть такой класс

class aClass
{
  public:
    aClass() : N(5) {}
    void aMemberFunction()
    {
      int nums[N] = {1,2,3,4,5};
    }
  private:
    const int N;
};

Код тестирования

int main()
{
  aClass A;
  A.aMemberFunction();

  const int N = 5;
  int ints[N] = {5,4,3,2,1};
  return 0;
}

Когда я компилирую (g++ 4.6.2 20111027), я получаю сообщение об ошибке

problem.h: In member function ‘void aClass::aMemberFunction()’:
problem.h:7:31: error: variable-sized object ‘nums’ may not be initialized

Если я закомментирую строку с int nums[N]я не получаю ошибки компиляции, поэтому аналогичный код для массива intsподходит. Разве значение Nне известно во время компиляции?

Что происходит? Почему numsсчитается массивом переменного размера? Почему массивы numsи intsобрабатываются по-разному?

5
задан stardt 13 March 2012 в 16:39
поделиться