Wäre enum-Zugriff über EnumName::Wert oder EnumName.Wert nicht viel besser?
-
Hi,
irgendwie finde ich das enum in C++ blöd.Wenn man jetzt mal z.B. folgendes enum hat:
enum Color { RED, GREEN };Kann man einfach überall nur mit RED oder GREEN auf die Werte zugreifen, ohne die Angabe von Color.
Ich fände es viel besser wenn man schreiben müsste Color::Red oder Color.Red.
Wahrscheinlich kann man das mit Hilfe einer Klasse/Struct nachbilden was ich will, aber das kann ja nicht der Sinn der Sache sein.
Wie ist eure Meinung dazu?
-
enum is doch afaik selber nur ne klasse
-
Hallo
du kannst die Enum-Definition ja noch extra in einen Namespace packen.
bis bald
akari
-
Klar, entweder per Klasse oder Namespace:
namespace Color { enum ColorEnum { RED }; }oder
class Color { public: enum ColorEnum { RED }; };Aber beides sieht mir wie ein kleiner Hack aus.

-
Wieso? Du schreibst ja auch nicht bool foo = bool::true;
-
User--- schrieb:
Wieso? Du schreibst ja auch nicht bool foo = bool::true;
ich schon

-
Na ja, irgendwie müllt man sich damit ja den ganzen Namespace zu.
Man könnte schreiben.
enum Color { COLOR_RED, COLOR_GREEN }:Aber schön ist das ja auch nicht.
-
a propos, ich hab net gemeint, du sollst des enum in ne klasse stecken, sondern ne klasse schreiben, die es gleiche macht wie n enum...
wer braucht schon die standard-funktionen
-
gab es enum schon in C? wenn ja dann ist der grund ja wieder kompatibilität.

-
enums sind afaik ne sache von c++
-
namespace Color { enum {red,green,blue}; };Vorden schrieb:
enums sind afaik ne sache von c++
c hat enums auch -> kann mir nicht vorstellen das c das von c++ uebernommen hat
-
Enums gibt es auch in C und man würde es in C++ so machen:
struct Color { static const Color Red; static const Color Green; };Das ist auch kein Hack, sondern die sicherere Alternative, da ein enum ja jederzeit in ein int konvertiert werden kann.
-
User--- schrieb:
Enums gibt es auch in C und man würde es in C++ so machen:
struct Color { static const Color Red; static const Color Green; };Das ist auch kein Hack, sondern die sicherere Alternative, da ein enum ja jederzeit in ein int konvertiert werden kann.
Die Konvertierung nach int ist gelegentlich aber durchaus praktisch (z.B. bei der bit-Verknüpfung mehrerer Werte).
Ich verwende eigentlich immer sowas wie:
struct Color { enum Value { red, green, blue }; }; typedef Color::Value ColorValue; void f() { ColorValue c = Color::red; }Das ist für die meisten einfachen Einsatzgebiete ausreichend.
-
was spricht eigentlich gegen diese variante:
Cpt.Tanga schrieb:
namespace Color { enum {red,green,blue}; };?
die erscheint mir nicht so umstaendlich und sollte das selbe resultat erziehlen.
-
Cpt.Tanga schrieb:
was spricht eigentlich gegen diese variante:
Cpt.Tanga schrieb:
namespace Color { enum {red,green,blue}; };?
die erscheint mir nicht so umstaendlich und sollte das selbe resultat erziehlen.Tut sie aber nicht. Da deine Aufzählung unbenannt ist, kannst du davon nach der Definition keine Objekte mehr anlegen.
-
dann halt so:
namespace Color { enum Color {red,green,blue}; };:p
