Typ wyliczeniowy w C++

Typ wyliczeniowy (ang. enumeration, skrót: enum) w C++ jest specjalnym typem danych, który pozwala tworzyć zmienne przyjmujące ograniczony zestaw nazwanych wartości. Dzięki temu kod staje się czytelniejszy i łatwiejszy w utrzymaniu, a wartości stałych są logicznie pogrupowane.


1. Definicja typu wyliczeniowego

Typ wyliczeniowy deklaruje się za pomocą słowa kluczowego enum.

Składnia:

Przykład:

  • DniTygodnia to nowy typ danych.
  • Poniedzialek, Wtorek, … to stałe wartości typu DniTygodnia.
  • Domyślnie wartości te są przypisane liczbom całkowitym: Poniedzialek = 0, Wtorek = 1, itd.

2. Przypisywanie wartości

  • Można jawnie przypisać wartości liczbowe do elementów wyliczenia.

Przykład:

  • Zimno = 0, Cieplo = 20, Goraco = 35.
  • Kolejne elementy bez przypisanej wartości przyjmują wartość o 1 większą od poprzedniego.

3. Tworzenie zmiennej typu wyliczeniowego

Przykład:

  • Zmienna dzien może przyjmować tylko wartości zadeklarowane w enum.
  • Porównania między wartościami wyliczeniowymi są w pełni legalne i czytelne.

4. Typ wyliczeniowy jako enum class (C++11)

  • Nowoczesna forma typu wyliczeniowego w C++11 wprowadza bezpieczne typy wyliczeniowe, które są ściśle typowane.
  • Chroni przed przypadkowym przypisaniem wartości spoza wyliczenia i uniknięciem konfliktu nazw.

Składnia:

Przykład użycia:

  • W enum class dostęp do wartości wymaga prefiksu Kolor::.
  • Nie można bezpośrednio przypisać wartości liczbowej do zmiennej typu enum class bez rzutowania.

5. Konwersja enum na liczbę

  • W klasycznym enum wartości można traktować jak liczby całkowite:
  • W enum class konieczne jest rzutowanie jawne: