• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed enum class c++

+1 głos
90 wizyt
pytanie zadane 17 czerwca w C i C++ przez Eriss69 Gaduła (4,050 p.)
zamknięte 17 czerwca przez Eriss69

Siemka!,

Załóżmy, ze mamy

 

int main()
{
    std::cout << "[1] Register" << std::endl;
    std::cout << "[2] Login" << std::endl;
    int choice;
    switch (choice)
    {
        case 1:
        {
            std::cout << "login \n";
            break;
        }
        case 2:
        {
            std::cout << "regis \n";
            break;
        }
    }
    
}

Chciałbym użyć enum class w taki sposób:

int main()
{
    enum class loginsys
    {
        login,
        regis
    };
}

Lecz jak dac możliwość użytkownikowi wyboru pomiędzy opcja 1 a 2?

Czytałem na Stack Overflow coś tam ale tam jest na sztywno to wprowadzone:

#include <iostream>

enum class E
{
    A,
    B
};

int main()
{
    E e = E::A;

    switch (e)
    {
    case E::A:
        std::cout << "A\n";
        break;
    case E::B:
        std::cout << "B\n";
        break;
    }
}

output: "A"

chciałbym stworzyć to tak żeby użytkownik mógł wybrać pomiędzy 1 a 2 gdyż w późniejszym kodzie mam więcej tych opcji i chciałbym to jakoś nazwać ładnie ..

 

komentarz zamknięcia: SOLVE
komentarz 17 czerwca przez j23 Mędrzec (164,240 p.)

Chodzi Ci o to, jak wartość z std::cin przekazać do switch?

int e;

std::cin >> e;

switch (static_cast<E>(e)) { ... }

 

komentarz 17 czerwca przez Eriss69 Gaduła (4,050 p.)
tak tak

1 odpowiedź

0 głosów
odpowiedź 17 czerwca przez TOM_CPP Pasjonat (19,080 p.)
edycja 17 czerwca przez TOM_CPP
 
Najlepsza

Problemem jest tutaj wczytanie do strumienia std::cin wartości typu class enum. Możesz to zrobić używając przeładowania operatora >>.

#include <iostream>

using namespace std;

enum class Type { NotDefined = 0 , Register = 1 , Login = 2 };

istream& operator>>( istream& in , Type& entry )
{
    int int_entry;   
    entry = ( in >> int_entry ) ? static_cast<Type>(int_entry) : Type::NotDefined;
    in.clear();
    in.ignore();
    return in;
}

int main()
{
    Type entry;

    cout << "[1] Register\n";
    cout << "[2] Login\n";

    do{ cin >> entry; }while( entry == Type::NotDefined );

    switch( entry )
    {
        case Type::Login:
            cout << "Login\n";
        break;
        case Type::Register:
            cout << "Register\n";
        break;
        default:
            cout << "Not defined type\n";
        break;
    }
}

 

komentarz 17 czerwca przez Eriss69 Gaduła (4,050 p.)
ale ten program prosi 2 razy o wprowadzenie czegos... sprawdzales?
Tzn, że po odpaleniu prorgramu 2 razy musze wpisac "1" zeby wybrac opcje register
komentarz 17 czerwca przez Eriss69 Gaduła (4,050 p.)
....
komentarz 17 czerwca przez Eriss69 Gaduła (4,050 p.)
Rozwiązane dziekuje!!!!!!!!

Podobne pytania

0 głosów
1 odpowiedź 113 wizyt
pytanie zadane 18 października 2020 w C i C++ przez NewEraOfPeace Gaduła (4,750 p.)
0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez dal'sharum Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 70 wizyt
pytanie zadane 16 maja 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

85,082 zapytań

133,883 odpowiedzi

296,819 komentarzy

56,216 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...