Ваша проблема в том, что после того, как вы получите пользовательскую опцию, независимо от того, что они вводят, вы сразу же предложите им «Введите положительное число больше 0:». После запроса они вводят номер, а затем программа выполняет оператор if, который срабатывает только в том случае, если опция! = QUIT_CHOICE, тогда она проверяет информацию while (). Поэтому, если они введут 4, чтобы выйти, он попросит их ввести целое число после этого, а затем не будет проходить через оператор if, потому что пользователь выбрал выход, а затем он выйдет из программы. Другими словами, ваш цикл while все еще заканчивается, но сначала запрашивает это целое число.
Чтобы завершить цикл while после того, как пользователь введет 4, необходимо переместить операторы получения ввода (следующие три строки в цикле while) ВНУТРИ оператора if, который продолжается в ifопция пользователя! = QUIT_CHOICE. Затем, после того как пользователь введет 4, все остальное будет проигнорировано и цикл while будет завершен.
std::cout << "Enter in a positive number greater than 0: ";
std::cin >> NUM;
getValidUserInputPosNumGT0(NUM);
Надеюсь, это поможет!