Размер массива не определен? C ++ - PullRequest
2 голосов
/ 30 ноября 2010

тупой вопрос.но ты можешь сделать это?(кстати, это глобальные переменные)

int size;
double Values[size];

Если я получаю РАЗМЕР из файла?

Я знаю, что вы, вероятно, не можете, но, может быть, это какой-то их способ перенастроить размеросновываясь на числе, которое я прочитал из файла (как, скажем, я прочитал в 7, я знаю, что значения должны быть размером 7).

Компилятор жалуется, но мне интересно, если это какой-то обходной путь.(между прочим, они должны оставаться глобальными переменными.

Ответы [ 3 ]

6 голосов
/ 30 ноября 2010

Нет, вы можете указывать размеры массива только с помощью константных интегральных выражений. Значение известно во время компиляции.

Тебе, наверное, вообще не следовало бы этого делать. Вместо этого вы должны использовать вектор.

Если по какой-либо причине вы не можете использовать вектор (в чем я серьезно сомневаюсь), тогда ваш следующий вариант - использовать динамически размещаемые массивы. Но, пожалуйста, ради любви ко всему хорошему в мире, используйте умный указатель, если вы делаете это.

3 голосов
/ 30 ноября 2010

Вы можете , на самом деле:)

C99 позволяет это. MSVC не поддерживает C99, GCC поддерживает.

C ++ компиляторы также имеют тенденцию разрешать это как расширение (ответьте сами, если у вас все в порядке в зависимости от расширений компилятора). Единственное требование - вам необходимо знать size на момент объявления Values.

A std::vector обычно лучше (а также безопаснее, стандартизирован и т. Д.) В любом случае, если вы действительно действительно не хотите, чтобы эти данные в стеке.

2 голосов
/ 30 ноября 2010

Вы можете сделать это, если распределяете их динамически:

double *Values = new double[size];
...

delete [] Values;

но не статично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...