Enumeration
-
Hallo,
könnte mir jemand sagen, wie einzelne Element einer Enumeration auswähle?
Bisher habe ich nur gefunden das folgendes geht:enum wochentage {montag, dienstag, mittwoch, donnerstag, freitag, samstag, sonntag}; wochentage tag; //zuweisung durch tag = montag; //oder tag = 0;Wenn es nun aber einen Namenskonflikt gibt, sagen wir ich habe eine Klasse, die ebenfalls ein Attribut montag hätte. Wie kann ich nun zwischen den beiden Werten unterscheiden, wenn tag nun auf wochentage.montag gesetzt werden soll?
Geht sowas?
-
Afaik wird der Namenskonflikt schon vom Compiler bemerkt - und führt dazu, daß sich dein Code nicht mehr compilieren lässt.
PS: der Code "tag=0;" ist zwar in C legal, aber nicht in C++
-
Hallo,
Pack doch dein enum in einen Namespace oder eine struct. Etwa so
struct wtage { enum wochentage {montag, dienstag, mittwoch, donnerstag, freitag, samstag, sonntag}; }; // Zugriff dann so wtage::wochentage tag; tag = wtage::montag;
-
Danke für den Tip mit namespace, damit kann man solche Dinge wenigstens meistern. Schade eigentlich, dass sowas ala wochentage.montag nicht klappt

-
Naja, ist alles nur eine Frage des Aufwandes:
const struct wochentage_ { enum type {montag_, dienstag_, mittwoch_, donnerstag_, freitag_, samstag_, sonntag_}; const type montag; const type dienstag; const type mittwoch; const type donnerstag; const type freitag; const type samstag; const type sonntag; } wochentage = {wochentage_::montag_, wochentage_::dienstag_, wochentage_::mittwoch_, wochentage_::donnerstag_, wochentage_::freitag_, wochentage_::samstag_, wochentage_::sonntag_}; typedef wochentage_::type wochentage_type; int main() { wochentage_type heute = wochentage.dienstag; return 0; }Und man sollte dabei bedenken, dass wochentage.??? nicht als konstanter Ausdruck verwendet werden kann.