Непонятно, о чем вы спрашиваете, но я сделаю несколько снимков по вашим проблемам.
Выражение cNumber + " is not within the range of (0-9)"
является сложением между char
и char const*
, что недопустимо. Вы, вероятно, случайно манипулируете адресами указателей.
Это возможно объединить char
в строку, но это должен быть фактический std::string
объект.
Итак:
throw cNumber + string(" is not within the range of (0-9)");
Точно так же вы неправильно используете +
позже в своем коде.
Запись:
cerr << cNumber << " is not a valid selection.... Input Error" << endl;
Вы также бросаете std::string
, но ловите std::exception
. Строки не являются производными от исключений. Прочитайте главу в своей книге C ++ о try / catch. (Бросать / ловить строки в любом случае не рекомендуется, и ни один не ловит по значению.)
Кроме того, если вход не является числовым, извлечение в int
завершится неудачно ... но у вас нет ошибок проверки / сброса в потоке cin
.
Для каждой строки вашего кода взгляните на каждый его компонент и спросите себя: «Что это делает? Почему я написал это?» Если по какой-либо части кода вы не можете ответить и доказать ответ на эти два вопроса, остановитесь и подумайте, действительно ли это правильно.