South_Bridge Skrevet 1. mars 2010 Skrevet 1. mars 2010 (endret) Hvis jeg har følgende enums: enum Color { RED, GREEN, BLUE } og skriver følgende: std::cout << "Color is " << RED << std::endl; får jeg ut "Color is 0". Det er jo litt kjedelig da jeg ville ha hatt ut "Color is RED". Kan det gjøres på en eller annen måte? En kan jo lage en tabell(for oppslag på indeks) med strings men det hindrer systemet å være fullt så fleksibelt. Endret 1. mars 2010 av South_Bridge
Giddion Skrevet 2. mars 2010 Skrevet 2. mars 2010 Som GeirGrusom sier så er ikke det støttet i c++, så for å få det til (med bare en definisjon) må du bruke macroer eller noen eksterne programmer.
zotbar1234 Skrevet 2. mars 2010 Skrevet 2. mars 2010 (endret) En kan jo lage en tabell(for oppslag på indeks) med strings men det hindrer systemet å være fullt så fleksibelt. I utgangspunktet -- nei. C++ tilbyr ikke symbolmanipulasjon på dette nivået. Du kan muligens prøve en eller annen form for preprosessering (makroer? Ditt eget lille språk på toppen av C++), men det blir også en del arbeid. Dersom C++-kompilatoren din støtter C99-utvidelser og du ikke er redd for evt. inkompatibilitet og du ikke setter enum-verdiene til noe veldig spesifikt, så kan dette være en framgangsmåte: enum color { red, green, blue }; const char *color_names[] = { [red] = "red", [green] = "green", [blue] = "blue", }; Evt. en funksjon som populerer en std::map (eller tilsvarende) som du så bruker for å oversette fra enum til dens tekstlige representasjon. Endret 2. mars 2010 av zotbar1234
_Ferrari_ Skrevet 2. mars 2010 Skrevet 2. mars 2010 Letteste er vel noe å lage en switch eller noe lignende. enum Color {red, blue, green}; Color farge; farge = red; switch(farge) { case red: cout << "red"; break; case blue: cout << "blue"; break; case green: cout << "green"; break; }
South_Bridge Skrevet 3. mars 2010 Forfatter Skrevet 3. mars 2010 Letteste er vel noe å lage en switch eller noe lignende. enum Color {red, blue, green}; Color farge; farge = red; switch(farge) { case red: cout << "red"; break; case blue: cout << "blue"; break; case green: cout << "green"; break; } mja... jeg endte opp med dette: enum Color { RED, GREEN, BLUE } std::string strColor[3] = { "RED", "GREEN", "BLUE" }; Og tanken ble da at enum Colors verdi ble da indeksen på det jeg ville ha i strColor
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå