Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
namespace MultiSampleCount { enum _MultiSampleCount { None = 0, Two = 2, Four = 4, Eight = 8, Sixteen = 16, }; }; namespace RefreshInterval { enum _RefreshInterval { Immediate = 0, One = 1, Two = 2, Three = 3, Four = 4, }; }; using namespace MultiSampleCount; using namespace RefreshInterval; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
class MultiSampleType { public: static const unsigned int None = 0; static const unsigned int Two = 2; static const unsigned int Four = 4; static const unsigned int Eight = 8; static const unsigned int Sixteen = 16; }; |
BOOST_FOREACH.Zitat von »"Deppomat"«
am meisten wünsche ich mir die foreach schleife
C++09. Und bis dahin: Workaround durch Namespace oder Struct innerhalb der Klasse.Zitat von »"Deppomat"«
und deren enumerations, denn da können die Namen auch mehrmals gleich sein, man muss nur immer den enumeranten davor schreiben
Welchen Vorteil hat das gegenüber enum? Wenn schon, würde ich innerhalb der Klasse ein enum (je nachdem ohne Namen) definieren.Zitat von »"Deppomat"«
Ansonsten benutze ich immer sowas hier:
Den Zusammenhang mit dem Präprozessor verstehe ich jetzt nicht ganz. Aber #define wird in modernem C++ sowieso nicht für Konstanten verwendet.Zitat von »"Deppomat"«
#define gefällt mir überhaupt nicht, weil ich möchte nicht so viel schreiben und immer wieder naschauen müssen, stattdessen benutze ich sowas, dann werden einem schon alle möglichen werte angezeigt, die man verwenden kann.
#Zitat von »"Fred"«
Ein Namespace ist im Normalfall größer und enthält nicht nur eine Klasse oder eine Enumeration. Und damit lässt sich ein solches Problem sehr einfach lösen. Denn was nutzen dir denn deine 10 Namspaces für 10 Enumerations. Da kannst du dir die Namespaces auch sparen.
Zitat
C++09. Und bis dahin: Workaround durch Namespace oder Struct innerhalb der Klasse.
Zitat
Welchen Vorteil hat das gegenüber enum? Wenn schon, würde ich innerhalb der Klasse ein enum (je nachdem ohne Namen) definieren.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class PrimitiveType { public: static const enum Enum { PointList = 0, LineList = 1, LineStrip = 2 TriangleList = 3, TriangleStrip = 4, TriangleFan = 5, }; }; |
C-/C++-Quelltext |
|
1 |
bool DrawPrimitiveUP(PrimitiveType::Enum primitiveType, ...... ); |
Zitat von »"Deppomat"«
Ich verstehe nicht ganz was du damit meinst, hasst du dich vieleicht versprochen und meinst enumeration anstatt Klasse? Wenn ja dann soll ich einfach die Member der enumeration in eine unbenannte Struktur stecken?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Raumschiff { // ... struct Kategorie { enum Typ { Jäger, Korvette, Kreuzer, Sternenzerstörer, }; }; }; |
C-/C++-Quelltext |
|
1 |
int Schaden = BerechneSchaden(Raumschiff::Kategorie::Kreuzer); |
C-/C++-Quelltext |
|
1 |
int Schaden = BerechneSchaden(Kategorie::Kreuzer); |
Zitat
Daran habe ich auch noch nicht gedacht, danke für den Hinweis! Bei mir würde das dann so aussehen: [...]
Die Member können mehrmals vorkommen, hat aber noch einen nachteil, mit dem man aber gut leben kann. Wenn ich nun eine Funktion declariere, die diese Enumeration als Parameter hat, muss das so aussehen: [...]
Zitat
wenn du den Klassennamen nicht angeben willst, definiere doch das Enum ausserhalb der Klasse?
Werbeanzeige