Diskussion:C++-Programmierung: Aufzählungen
Zuweisung int an enum
BearbeitenGeht nicht so ohne weiteres, sondern erfordert expliziten Cast. Siehe ISO 14882, 7.2.8-9. Allerdings erzeugen viele Compiler nur eine Warnung oder erlauben es tatsächlich (im Sinne der Kompaitibilität mit C).
Habe deshalb das längere Codebeispiel auskommentiert. Eigentlich schade, vielleicht möchte jemand ein Kapitel über Bit-Operatoren schreiben? --Bernina 15:09, 24. Sep 2006 (CEST)
- Ich setze dieses Beispiel vorerst hier ein:
Diese Variablen sind jedoch nicht typsicher, das heißt eine Anweisung wie die folgende würde vom Compiler nicht zurückgewiesen werden:
tag = 100;
Diese fehlende Typsicherheit ermöglicht es aber, mehrere Werte aus der Menge aufzunehmen. Würde man die Aufzählung wie folgt definieren,
enum Wochentage
{
Montag = 1,
Dienstag = 2,
Mittwoch = 4,
Donnerstag = 8,
Freitag = 16,
Samstag = 32,
Sonntag = 64
};
könnte man mit
tag = Montag | Dienstag | Mittwoch | Donnerstag | Freitag;
der Variable alle Arbeitstage zuweisen. Dies ist möglich, da die einzelnen Werte Oder-verknüpft werden und somit, da bei der Aufzählungs-Deklaration nur Zweier-Potenzen verwendet wurden, immer eindeutige Kombinationen entstehen.
Montag 00000001 = 1 Dienstag 00000010 = 2 Mittwoch 00000100 = 4 Donnerstag 00001000 = 8 Freitag 00010000 = 16 ------------------------ tag 00011111 = 31
Um abzufragen, ob in einer Variabler ein bestimmter dieser Werte enthalten ist, kann man folgenden Code verwenden:
bool montagIstEnthalten = ((tag & Wochentage::Montag) != 0)
Dies Und-verknüpft die tag-Variable mit dem gesuchten Tag
tag 00011111 Montag 00000001 ----------------- Ergebnis 00000001
Da dieses Ergebnis ungleich 0 ist, ist der gesuchte Tag enthalten.
Darin sind nahezu alle Aussagen falsch, aber vieleicht wird es später doch noch mal zur Verbesserung benötigt. --Prog 20:41, 30. Jun. 2007 (CEST)