Wstęp
Enum to rodzaj danych, który zawiera już listę wartości, jaką można nadać zmiennej własnego typu enum. Taki typ poprzedza słowo kluczowe
enum.
Przykład
Aby zobrazować, jak działa enum, najpierw chciałbym napisać kod:
#include <iostream>
using namespace std;
enum wlasny_enum
{
przyklad0 = 0,
przyklad1 = 1,
przyklad2 = 2,
przykladktorystam
};
int main()
{
wlasny_enum nowy;
nowy = przyklad0;
cout << nowy << endl;
getchar();
}
W tym typie, tak jak to napisałem w komentarzu, używa się przecinków.
Zawsze przy ostatnim elemencie takowego nie poleca się używać.
Teraz przekształć program tak, aby wszystkie "elementy" miały przecinek na końcu. Nie powinno się go robić. Nasza zmienna przyjmuje wartość elementu, jaki napisany jest po operatorze =. Uwaga: w wartościach mogą znajdować się tylko liczby całkowite. Nie możesz używać np. znaków
char(tzn. możesz, jednak zamiast sensownego znaku program zwróci jego kod ASCII).
O "wartości początkowej"
Teraz przekształć program tak, aby zmienna `nowy` nie miała początkowej wartości(14 linika). Program wywala nam jakąś liczbę z nikąd.
Zmienna, która nie ma wartości początkowej, przyjmuje wartość zmiennej, która była niegdyś zapisana w komórce, w której aktualnie zapisana jest nasza zmienna.
Nie trzeba też nadawać poszczególnym elementom wartości. Same one ją znajdą, korzystając z ilości elementów(podobnie jest z tablicami, gdzie indeksowanie zaczyna się od zera).
#include <iostream>
using namespace std;
enum wlasny_enum
{
przyklad0,
przyklad1,
przyklad2
};
int main()
{
wlasny_enum nowy = przyklad0;
cout << nowy << endl;
nowy = przyklad1;
cout << nowy << endl;
nowy = przyklad2;
cout << nowy << endl;
getchar();
}
Wykorzystywanie składników enum
Nie trzeba tworzyć zmiennej nowego enuma, żeby z niego skorzystać.
#include <iostream>
using namespace std;
enum wlasny_enum
{
przyklad0 = 0,
przyklad1 = 1,
przyklad2 = 2,
przykladktorystam,
przyklad
};
int suma_liczb_naszego_enuma()
{
return wlasny_enum( przyklad0 ) + wlasny_enum( przyklad1 ) + wlasny_enum( przyklad2 ) + wlasny_enum
( przykladktorystam ) + wlasny_enum( przyklad );
}
int main()
{
cout << suma_liczb_naszego_enuma() << " " << wlasny_enum( przyklad ) << endl;
getchar();
}
Aby skorzystać z składnika enum, umieść go w nawiasie. Tutaj widzimy funkcję zwracającą sumę naszego enuma, korzystającą z jego struktury.
Wskaźniki
Dla każdego typu można utworzyć wskaźnik, który odwołuje się do zmiennej. W ramach przypomnienia napisałem program, używający wskaźników:
#include <iostream>
using namespace std;
int main()
{
int liczba = 15;
int * wskaznik =& liczba;
int ** wskazniknowy =& wskaznik;
cout << liczba << " " <<* wskaznik << " " <<** wskazniknowy << endl;
getchar();
}
Można oczywiście utworzyć wskaźnik do enum:
#include <iostream>
using namespace std;
enum wlasny_enum
{
przyklad0 = 0,
przyklad1 = 1,
przyklad2 = 2,
przykladktorystam,
przyklad
};
int suma_liczb_naszego_enuma()
{
return wlasny_enum( przyklad0 ) + wlasny_enum( przyklad1 ) + wlasny_enum( przyklad2 ) + wlasny_enum
( przykladktorystam ) + wlasny_enum( przyklad );
}
int main()
{
wlasny_enum nowy = przykladktorystam;
wlasny_enum * wskaznik =& nowy;
cout << suma_liczb_naszego_enuma() << " " << wlasny_enum( przyklad ) << " " <<* wskaznik << endl;
getchar();
}
Funkcje a enum
Tutaj nasze enum to jeden z argumentów, tak jak w przypadku tworzenia funkcji zwykłej. Oczywiście trzeba jako argument użyć naszego enuma, i nazwy nowej zmienej:
#include <iostream>
using namespace std;
enum wlasny_enum
{
przyklad0 = 0,
przyklad1 = 1
};
wlasny_enum zmien( wlasny_enum argument )
{
return argument;
}
wlasny_enum zmien1( wlasny_enum & argument )
{
return argument;
}
int main()
{
wlasny_enum przykladowy0 = zmien( przyklad1 );
wlasny_enum przykladowy1 = zmien1( przykladowy0 );
cout << przykladowy0 << " " << przykladowy1 << endl;
getchar();
}
W przypadku pierwszej funkcji używamy argumentu, by nadać zmiennej wartość, zaś w drugim przypadku jest referencja, która odwoływać się będzie do jakiejś zmiennej.