Использование перечисления для выбора

Необходимо с помощью перечисления 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);

}

Ответы (0 шт):