2013-07-15 2 views
1

Ошибка находится внизу с выходом.C++ Game Запущено завершение вызова после вызова экземпляра 'std :: out_of_range'

Output: 

Добро пожаловать в мою игру Word Scramble!

а) Добавить слова в базу данных игр б) Удалить слова с) настроить отсчет время d) Запустить игру е) Выберите уровень игр х) Посмотреть оценку диаграмма г) Выход Пожалуйста, введите алфавит выберите: d

игры Начало Terminate называется кинув экземпляр 'станд :: out_of_range' , что(): вектор :: _ M_range_check яблоко апельсин арбуз lemondinosaur RUN ЗАВЕРШЕНА; Отменено; в реальном времени: 1 с; user: 0ms; system: 0ms

ниже кода мой вывод, что с моим кодом может кто-нибудь мне помочь, Любая помощь будет оценена! Приветствия!

+0

Мы думаем, что у вас отсутствует часть вашего кода, потому что то, что вы даете нам как ваш «выход», имеет несколько строк, которые не указаны в коде – MisterJ

+3

'string jumble = levelList.at (rand()% wordList.size()); 'всегда будет указатель billz

+0

Вы пытались отладить его? В какой строке он рушится? –

ответ

5
levelList.at(rand()% wordList.size()); 

Это, вероятно, будет вне диапазона некоторое время, так как wordList, вероятно, будет больше, чем levelList.

Предположительно, вы имели в виду

levelList.at(rand()% levelList.size()); 
        ^^^^^^^^^ 

Вы также не инициализацией level переменной, объявленной в startGame, поэтому вполне вероятно, что levelList будет совершенно пустой. Предположительно, вы хотите использовать аргумент функции, чтобы указать уровень.

+0

Wordlist и levellist на самом деле то же самое, только то, что levellist будет сравнивать слова и сортировать по разному уровню –

+0

@WilsonTurner: Нет, 'levelList' заполняется только некоторыми словами в' wordList', в зависимости от значения ' level', поэтому он обычно будет меньше. Кроме того, поскольку вы никогда не инициализируете 'уровень', он, вероятно, будет пустым. –

+0

, когда мое меню игры вверх, я уже предлагаю пользователю вводить уровень. –

2

Если слово файл содержит какие-либо слова, которые менее двух символов, levelList будет короче wordList, так что эта линия

levelList.at(rand()% wordList.size()); 

вызовет проблемы, которую вы состояние.

0

Вы явно не назначаете значение вашей переменной 'level', которая установлена ​​в 0. Ваш оператор switch не распространяется на этот случай, поэтому ваш levelList пуст. Затем вы пытаетесь получить доступ к записи в списке нулевой длины, который вызывает сообщение за пределами диапазона.

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