Jak sprawdzić czy zmienna należy do enuma

0
char chZnak;
cin >> chZnak;
 

Później tą zmienną rzutuje na enuma i chce żeby program sprawdził czy użytkownik wpisał wartość należącą do enuma. A jeśli nie wyświetlić odpowiednią informacje. Mógłbym użyć ifów, ale to trochę mozolne gdy enum jest większy.

0

Się nie da w prosty sposób, w C++ enumy to bliżej nieokreślone liczby w ładnym ubranku.

0
#include <stdio.h>

enum En {
  ENUM_ITEM_NORTH,                // = 0
  ENUM_ITEM_SOUTH,                // = 1
  ENUM_ITEM_WEST,                 // = 2
  ENUM_ITEM_EAST,                 // = 3
  ENUM_ITEM_LAST = ENUM_ITEM_EAST // = 3

};

int main()
{
  En en;
  int um = 2;
  if (um>=0 && um<=ENUM_ITEM_LAST)
  {
    en = (En)um;
    printf("jest w zakresie\n");
  }
}

w C++ enumy to bliżej nieokreślone liczby w ładnym ubranku.

są to konkretnie określone liczby: jeśli nie podano inaczej, numeracja zaczyna się od 0.

Się nie da w prosty sposób
niestety, Pascal/Delphi na przykład ma od tego wygodne wyrażenie:

if zmienna in [low(En)..high(En)]
0
Azarien napisał(a)

w C++ enumy to bliżej nieokreślone liczby w ładnym ubranku.

są to konkretnie określone liczby: jeśli nie podano inaczej, numeracja zaczyna się od 0.

Nom, nawet nie mają określonego rozmiaru, dwa różne enumy mogą zajmować różną ilość miejsca w pamięci...

0

no tak, ale ten sposób działa tylko, gdy do enumów przypisana jest wartość liczbowa, ja niestety mam pojedyncze znaki

1 użytkowników online, w tym zalogowanych: 0, gości: 1