Enum, czyli typ wyliczeniowy w C++

enum, czyli typ wyliczeniowy w C++, to sposób na zdefiniowanie zestawu nazwanych stałych jako typu wyliczeniowego. Używa się go do reprezentowania grupy stałych całkowitych w bardziej czytelnej formie. enum poprawia czytelność kodu, umożliwiając korzystanie z nazw symbolicznych zamiast surowych wartości liczbowych.
Sposoby i Metody
Deklaracja i Definicja
enum deklaruje się poprzez słowo kluczowe enum, po którym następuje opcjonalna nazwa typu i lista nazwanych stałych:
enum NazwaTypu { Stała1, Stała2, ... };
Wartości w enum są domyślnie typu int i zaczynają się od 0, chyba że zostaną jawnie zainicjalizowane.
Przykłady
Przykład 1: Proste enum
enum Kolor { Czerwony, Zielony, Niebieski };

void pokazKolor(Kolor k);

int main() {
    pokazKolor(Zielony);
    return 0;
}

void pokazKolor(Kolor k) {
    if (k == Czerwony) std::cout << "Czerwony";
    else if (k == Zielony) std::cout << "Zielony";
    else std::cout << "Niebieski";
    std::cout << std::endl;
}
Przykład 2: enum z określonymi wartościami
enum DzienTygodnia { Poniedzialek = 1, Wtorek, Sroda, Czwartek, Piatek, Sobota, Niedziela };

void pokazDzienTygodnia(DzienTygodnia dzien);
Przykład 3: enum class
enum class (lub „scoped enum”) to ulepszona wersja enum, która zapewnia lepsze zabezpieczenie przestrzeni nazw i silniejsze typowanie.
enum class Status { Sukces, Blad };

void sprawdzStatus(Status s);
Przykład 4: enum w switch-case
enum jest często używany w instrukcjach switch, aby wykonać różne działania w zależności od wartości enum.
enum Stan { Wlaczony, Wylaczony };

void operacja(Stan s) {
    switch (s) {
        case Wlaczony:
            // akcja dla Wlaczony
            break;
        case Wylaczony:
            // akcja dla Wylaczony
            break;
    }
}
Przykład 5: Konwersja enum na int
Czasami potrzebujemy uzyskać wartość liczbową stałej enum, co można osiągnąć przez jawne rzutowanie.
enum Poziom { Niski = 1, Sredni, Wysoki };

void pokazPoziom(Poziom p) {
    std::cout << "Poziom wartość: " << static_cast<int>(p) << std::endl;
}
Podsumowanie
enum i enum class to przydatne narzędzia w C++, które pozwalają na definiowanie i używanie zestawu nazwanych stałych w bardziej czytelny i bezpieczny sposób. Poprawiają one czytelność kodu, ułatwiają zarządzanie grupami stałych wartości i wspomagają pisanie bardziej modularnego i łatwiejszego do zrozumienia kodu.