Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
goradon
0 / 0 / 1
Регистрация: 30.12.2013
Сообщений: 72
#1

Почему происходит ошибка при описании массива?

28.01.2014, 20:50. Просмотров 863. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
int setSize;
    cout << "How many elements would you have? ";
    cin >> setSize;
    const int getSize = setSize;
    int a[getSize];
ошыбка тут
C++
1
int a[getSize]
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 20:50
Ответы с готовыми решениями:

Почему не происходит ошибка при обращении к недопустимому индексу
#include &lt;string&gt; int main() { std::string s; s; } Исключения не...

Ошибка компиляции при описании алгоритма
Здравствуйте, помогите.. из-за чего при компиляция возникают такие оошибки.. ...

Почему происходит ошибка времени выполнения?
прошу помощи в поиске ошибки! уже 2часа пытаюсь найти и никак... Тоже...

Подскажите почему происходит ошибка в вычислении
При введении следующих параметров (60 2.3 3) выходит ответ 4rub. 13cop. хотя...

Почему происходит ошибка undefined reference to hgeCreate
Всем привет. Я новичок по C++ и недавно решил освоить разработку игр. Скачал с...

7
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
28.01.2014, 20:57 #2
Цитата Сообщение от goradon Посмотреть сообщение
const int getSize = setSize;
getSize - не константа и компилятор не может определить какой размер стека нужен

Добавлено через 3 минуты
а вообще, насколько я понял фишка компилятора, на некоторых пройти может
0
MrGluck
Модератор
Эксперт CЭксперт С++
8070 / 4923 / 1430
Регистрация: 29.11.2010
Сообщений: 13,339
28.01.2014, 20:58 #3
если компилятор не поддерживает VLA, то подобные вещи на нем не запустишь. В нынешние стандарты С++ (в С++14 обещают ввести) они не входят, есть лишь в С99.
Однако g++ данный код считает вполне валидным и умеет обрабатывать.
1
goradon
0 / 0 / 1
Регистрация: 30.12.2013
Сообщений: 72
28.01.2014, 21:06  [ТС] #4
MrGluck, у меня visual studio 2013 можно что та скачать чтобы оно ето видело ?
или подскажи как водить константу с клавы ?
0
vovacreme
61 / 61 / 33
Регистрация: 14.01.2014
Сообщений: 145
28.01.2014, 21:08 #5
Лучший ответ Сообщение было отмечено goradon как решение

Решение

Цитата Сообщение от goradon Посмотреть сообщение
C++
1
2
3
4
5
int setSize;
    cout << "How many elements would you have? ";
    cin >> setSize;
    const int getSize = setSize;
    int a[getSize];
ошыбка тут
C++
1
int a[getSize]
потому что значение переменной getSize должно быть известно на момент компиляции, а не во время компиляции. В твоем случае нужно использовать динамическое распределение памяти:

C++
1
2
3
4
5
6
int setSize;
cout << "How many elements would you have? ";
cin >> setSize;
int * a = new int[setSize];
// действия над массивом
delete[] a;
1
MrGluck
Модератор
Эксперт CЭксперт С++
8070 / 4923 / 1430
Регистрация: 29.11.2010
Сообщений: 13,339
28.01.2014, 21:10 #6
Цитата Сообщение от goradon Посмотреть сообщение
у меня visual studio 2013 можно что та скачать чтобы оно ето видело ?
Конечно. Качаете другой компилятор (Mingw) и работаете в нем.
Но в вашем случае надо работать с динамической памятью, а не искать компилятор, где код, несоответствующий стандарту С++, вдруг заработает.

Добавлено через 19 секунд
Цитата Сообщение от vovacreme Посмотреть сообщение
а не во время компиляции
а не во время выполнения
/fixed
1
vovacreme
61 / 61 / 33
Регистрация: 14.01.2014
Сообщений: 145
28.01.2014, 21:17 #7
Цитата Сообщение от MrGluck Посмотреть сообщение

Добавлено через 19 секунд

а не во время выполнения
/fixed
Пардон, ошибся
0
goradon
0 / 0 / 1
Регистрация: 30.12.2013
Сообщений: 72
28.01.2014, 21:33  [ТС] #8
vovacreme,
C++
1
int * a = new int[setSize];
спасибо помогло ! ))
0
28.01.2014, 21:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 21:33

Почему в этом коде происходит ошибка Heap Corruption
Где я накосячил с памятью? /*Дан массив размерности n (четное). В...

Почему происходит выход за границы массива в функции Analyze()?
#include &quot;Analyzer.h&quot; #include &quot;HashTable.h&quot; #include &lt;iostream&gt; #include...

Почему происходит инициализация только первого элемента динамического массива структуры?
Здравствуйте. Я пишу программу для табулирования функции cos(x). Аргументы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru