C ++ typedef enum und nur enum [duplizieren]

7

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?

    
Nickoleta Dimitrova 27.03.2012, 15:49
quelle

3 Antworten

15

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).

    
Oliver Charlesworth 27.03.2012 15:52
quelle
12

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.

    
Nawaz 27.03.2012 15:53
quelle
1

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.

    
R. Martinho Fernandes 27.03.2012 15:55
quelle

Tags und Links