Код: блокирует ошибку компилятора Mingw: объект переменного размера не может быть инициализирован

Я создаю простую терминальную фэнтезийную игру с использованием C ++. Кажется, я столкнулся с ошибкой «ошибка: объекты« переменного размера »не могут быть инициализированы». Вот код:

string useItem(int item)
{
string items[item] = {"HP Potion","Attack Potion","Defense Potion","Revive","Paralize Cure"};
}

Я хочу иметь возможность использовать эту функцию для доступа и возврата элемента. Как я могу исправить эту ошибку. Я использую Code :: Blocks с компилятором mingw.

2

Решение

Здесь есть пара проблем: один массив переменной длины является функцией C99 и не является частью ISO C ++, но несколько компиляторов поддерживают эту функцию как расширение в том числе gcc.

Во-вторых, C99 говорит, что массивы переменной длины не могут иметь инициализатор, из проект стандарта C99 раздел 6.7.8 инициализация:

Тип объекта, который должен быть инициализирован, должен быть массивом неизвестных
размер или тип объекта, который не является типом массива переменной длины.

и альтернативой является использование:

string items[] = { ... } ;

размер массива неизвестного размера будет определяться количеством элементов в инициализаторе.

В качестве альтернативы можно использовать идиоматический способ C ++ иметь массив переменного размера. станд :: вектор.

2

Другие решения


По вопросам рекламы [email protected]