Использование перечисления для выбора
Необходимо с помощью перечисления enum создать меню выбора. Необходимо вводить поле перечисления. При этом выдает ошибку"нарушение прав доступа по адресу". Если вводить число, то отрабатывает нормально. Подскажите в чём ошибка. Вот два варианта кода:
void MenuSort()
{
enum eSort { vp, author, name, year, price, category };
eSort w=vp;
do
{
std::cout << "Выберете признак для сортировки :\n\n\
Выход из программы (vp)\n\
Автор (author)\n\
Название (name)\n\
Год издания year\n\
Цена price\n\
Категория category\n\
Значение :";
int b=0;
std::cin >>b;
w = eSort(b);
switch (w)
{
case vp:
break;
case author:
SorAuthor(k);
break;
case name:
SorName(k);
break;
case year:
SorYear(k);
break;
case price:
SorPrice(k);
break;
case category:
SorCategory(k);
break;
default:
std::cout << "Это значение недопустимо!\n\n";
break;
}
} while (w > vp);
}
void MenuSort()
{
enum class eSort { vp, author, name, year, price, category };
eSort w= eSort::vp;
do
{
std::cout << "Выберете признак для сортировки :\n\n\
Выход из программы (vp)\n\
Автор (author)\n\
Название (name)\n\
Год издания year\n\
Цена price\n\
Категория category\n\
Значение :";
int b=0;
std::cin >>b;
w = eSort(b);
switch (w)
{
case eSort::vp:
break;
case eSort::author:
SorAuthor(k);
break;
case eSort::name:
SorName(k);
break;
case eSort::year:
SorYear(k);
break;
case eSort::price:
SorPrice(k);
break;
case eSort::category:
SorCategory(k);
break;
default:
std::cout << "Это значение недопустимо!\n\n";
break;
}
} while (w > eSort::vp);
}