Сначала включите предупреждения компилятора. Это может помочь вам найти некоторые вещи, которые вы считаете нормальными, но на самом деле это не так. Например, функции с типами, отличными от void
, всегда должны возвращать что-то. Если они этого не делают, то поведение вашей программы не определено, и неопределенное поведение включает в себя «работу именно так, как вы хотели, за исключением некоторой тонкой разницы позже в программе». Если вы используете g ++, опция для предупреждений: -Wall
.
Во-вторых, обратите внимание, что не только выделенная строка не работает. вся pushSynonyms
функция никогда не вызывается. Ваш класс уже рассмотрел, как использовать отладчик? Если так, то подумайте об этом. Если нет, попробуйте добавить в вашу программу несколько операторов "cout
", чтобы вы могли точно увидеть, как далеко продвигается ваша программа, прежде чем она пойдет не так.
В-третьих, обратите внимание, что при сбое чтения потока устанавливается бит сбоя потока. Пока вы не очистите его (, как показано в ответе sth ), дальнейшее извлечение из этого потока не может быть выполнено, поэтому дальнейшее использование >>
и getline
завершится неудачей.