namespace enum statt enum class



  • Hiho,

    Warum eigentlich enum class , wenn auch namespace enum ? Ist doch viel funktioneller! Mit nem plain old enum in einem Namespace muss man nicht alle Operatoren definieren. Name-Clashes sind vermeidbar. Der Namespace kann ins globale zugänglich gemacht werden.

    Also, warum haben die im Standard enum class erfunden, wenns andersrum, also mit den von damals bereits existierenden Features sogar noch besser ging?

    Klar, dann hat man halt 2 Zeilen mehr, wen juckts.



  • Ahja stimmt, Variablen von verschiedenen enum classes kann man nicht zuweisen.
    Aber trotzdem! Mit einem namespace enum leuchtet es doch direkt ein, welche Enumeration zu welchem Enumerator passt.



  • Die Dinge die du als Nachteil listest (dass man Operatoren selbst definieren muss etc.), können in vielen Situationen ein Vorteil sein.
    Speziell dass ne enum class nicht automatisch in nen int zerfällt.

    Das geht mit enum-in-namespace nicht. Daher enum class.



  • hustbaer schrieb:

    Die Dinge die du als Nachteil listest (dass man Operatoren selbst definieren muss etc.), können in vielen Situationen ein Vorteil sein.

    Zum Beispiel, wenn man etwa die Operatoren nicht braucht? Dann fasst man sie doch gar nicht erst an! Ich finde, der Programmierer soll der Entscheider sein und nicht die Sprache.

    Speziell dass ne enum class nicht automatisch in nen int zerfällt.

    Das geht mit enum-in-namespace nicht. Daher enum class.

    Aber dann macht man es halt nicht. Wieder einmal: Der Programmierer ist der Entscheider. Irgendwo fände ich es auch richtig, wenn eine Enumeration implizit in den unterliegenden Typen konvertierbar ist. Hier gehts ja schließlich um Enumerationen!

    Der Fehler liegt dann halt immer bei Layer 8.
    C++ wurde nicht designed um benutzerfreundlich zu sein.

    Also wenn ich da ne Enumeration hätte, wo ich alleine schon Operatoren bräuchte, ich würde es mit nem anonymen enum in einem namespace verpackt machen. Einfach nur aus dem Grund, um mir das lästige Operatoren-Schreiben vom Hals zu schaffen. Letztendlich liegt es am Programmierer, wie er nun mit den Enumerationen hantiert.



  • namespacer schrieb:

    C++ wurde nicht designed um benutzerfreundlich zu sein.

    Halt die Klappe und lies ecp.
    C++ ist dazu da, daß Fehler auf dem Schreibtisch bleiben und nicht zum Kunden rausgehen.



  • volkard schrieb:

    namespacer schrieb:

    C++ wurde nicht designed um benutzerfreundlich zu sein.

    C++ ist dazu da, daß Fehler auf dem Schreibtisch bleiben und nicht zum Kunden rausgehen.

    Nö.



  • Sind enums in namespaces denn jetzt verboten?


Log in to reply