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

question-closed enum class c++

Fiszki IT
Fiszki IT
+1 głos
89 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,180 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 (17,820 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ź 112 wizyt
pytanie zadane 18 października 2020 w C i C++ przez NewEraOfPeace Gaduła (4,750 p.)
0 głosów
1 odpowiedź 91 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
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

84,750 zapytań

133,554 odpowiedzi

295,976 komentarzy

56,009 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.

...