Was genau ist der Unterschied zwischen:
%Vor%Ende nur
%Vor%Ich weiß, dass ich im ersten Fall unbenannte enum typedefed habe, frage mich natürlich, welcher Ansatz besser ist und warum?
Die erste Variante war in C nützlich, weil du sonst enum myEnum
überall schreiben müßtest, wo du sie benutzen wolltest.
Dies ist in C ++ nicht der Fall. Also, AFAIK, gibt es keinen Vorteil für den ersten Fall in C ++ (es sei denn, Sie definieren beispielsweise eine Schnittstelle, die mit C geteilt werden muss).
Kein Unterschied. In der Tat ist die erste Version C-Style-Codierung.
C ++ 11 hat eine stronly-typed enum eingeführt, die Sie wie folgt definieren:
%Vor% In C ++ 03 sind Aufzählungen nicht typsicher, sie sind im Wesentlichen Ganzzahlen und können sich implizit mit anderen ganzzahligen Typen mischen, und ein anderes Problem mit ihnen ist, dass sie keinen Geltungsbereich haben; Sie können sein Mitglied verwenden, ohne seinen Typ zu qualifizieren. Sie können something1
verwenden. Während C ++ 11 stark typisierte enums typsicher sind, haben sie einen Gültigkeitsbereich; Sie müssen myEnum::something1
verwenden.
Ich würde den ersten nicht verwenden. Es ist fast dasselbe wie das andere. In C ++ 11 können Sie mit der Sekunde myEnum::something1
schreiben, aber nicht mit der ersten. Auch in C ++ 11 können Sie Deklarations-Enums in einigen Fällen weiterleiten, aber es ist unmöglich, Vorwärtsdeklarationen von nicht unterstützten Typen auszuführen, und Sie können declare typedefs auch nicht weiterleiten.