2015-08-26 3 views
4

Я попытался найти это, но не могу найти. Я знаю, что могу создать ссылку на переменную массива:ссылка на массив размеров, определенный во время выполнения

int x[10] = {}; int (&y)[10] = x; 

Однако, в том случае, если размер массива не известен во время компиляции, как показано в следующем коде:

const int n = atoi(string); //the string is read from a text file at run time. 
int x[n] = {}; int (&y)[n] = x; //this generates a compiling error. 

Даже если int n объявляется const, пока n не известно во время компиляции, ссылка недействительна. Компилятор скажет что-то вроде этого: ссылка на тип 'int [n]' не может связываться со значением неродственного типа 'int [n]'. Кто-нибудь знает, как это исправить? Заранее спасибо.

ответ

6

Runtime-length массивы являются функцией C99 и не существуют в стандартном C++. Они присутствуют как расширение на некоторых компиляторах C++, но не смешиваются с функциями C++, такими как ссылки и шаблоны.

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

0

Функция объявления динамических массивов, как динамически, не должна использоваться в C++. Не все компиляторы поддерживают его. Вместо этого рассмотрите использование контейнеров STL. Как std::vector<int>

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