Ich bin es gewohnt, enum
als Konstanten zu verwenden - sie sind schnell zu schreiben, können in .h-Dateien abgelegt werden und funktionieren einwandfrei.
enum {BOX_LEFT=10, BOX_TOP=50, BOX_WIDTH=100, BOX_HEIGHT=50};
enum {REASONS_I_LIKE_ENUM_AS_CONSTANTS = 3};
Ist das keine gute Idee mehr?
Ich sehe gute Gründe , die Aufzählungsklasse zu bevorzugen (herkömmliche Aufzählungen werden implizit in int konvertiert; herkömmliche Aufzählungen exportieren ihre Aufzähler in den umgebenden Bereich), aber dies sind Gründe, in diesem Fall alte Aufzählungen zu bevorzugen.
Ich sehe in einem Thread über statische constexpr int vs altmodische Aufzählung, dass altmodische Aufzählung besser ist, weil man sie mit einem statischen constexpr-Mitglied auch außerhalb der Klasse deklarieren muss. Dies gilt jedoch anscheinend nicht mehr für C ++ 17 und gilt möglicherweise ohnehin nur für Klassenmitglieder.
Was ist der bevorzugte Weg in C ++ 17?
Das ist subjektiv.
Dies war jedoch immer ein Missbrauch von Aufzählungen. Sie zählen nichts auf; Sie stehlen nur die enum
Funktion, um einige mit beliebigen ganzzahligen Werten zu verknüpfen, die keinen eigenen logischen "Typ" haben sollen.
Das enum class
ist auch hier nicht angebracht (weil, wie Sie betont haben, die Eigenschaften eines enum class
erzwungen werden, enum
das vorhanden sein sollte, das Sie aber eigentlich nicht wollen).
Da es kein Problem mehr gibt static constexpr int
, würde ich das verwenden (oder constexpr inline int
oder was auch immer es diese Woche ist).
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen