2011-01-03 6 views

ответ

5

Компилятор C++ может выделять только массив с размером, известным во время компиляции. Если вы хотите выделить часть памяти с переменным размером, используйте оператор new.

+7

или даже еще лучше, 'зОго :: VECTOR'. –

+1

Похож на ответ на какой-то другой вопрос для меня –

9

К сожалению, вы не можете сделать это в стандартном C++, потому что vals[2] не является постоянным выражением! В наступающем стандарте вы бы constexpr (реализованный в г ++ 4.6) для запроса во время компиляции оценки легко:

#include<iostream> 
using namespace std; 

constexpr int vals[] = {0, 1, 2, 3, 4}; 

int newArray[ vals[2] ]; // vals[2] is a constant expression now! 

int main(){ 
    return vals[2]; 
} 
5

Вполне возможно, что значение выражения const даже не известно во время компиляции. Например, вы можете инициализировать константу с чем-то возвращается из функции, как

const int size = rand(); // random size 

Так что не , что постоянное как вы могли бы подумать

Смежные вопросы