Article View: de.comp.lang.c++
Article #748Re: enums
From: Herbert Kremser
Date: Wed, 08 Nov 1995 15:48
Date: Wed, 08 Nov 1995 15:48
39 lines
1788 bytes
1788 bytes
Karl-Heinz Krause (Krause@btx.dtag.de) wrote:
: Am 3. Nov. 1995 schrieb Benjamin Baermann
: (benni@dares.rbi.informatik.uni-frankfurt.de):
:
: > Hallo!
:
: > Mein Compiler weigert sich enums implizit nach int zu konvertieren. Das
: > ist ja einerseits irgendwie korrekt, andererseits doch aber hochgradig
: > unpraktisch, da dann so schoene Konstrukte, wie:
:
: > const int maxcolor = 3;
: > enum color {blue, white, green};
:
: > for(i=0;i=maxcolor;i++){
: > draw(i);
: > }
:
: Die korrekte C++-gerechte Version wäre wohl:
:
: enum color {blue, white, green};
: inline color operator++(color &c,int)
: { color tmp=c; c = color(c+1); return tmp; }
:
: for (color i=blue; i<=green; i++) draw(i);
:
: Zugegebenermaßen ziemlich aufwendig.
Nicht nur das. Was passiert eigentlich bei color(4) ?
Fehlerueberpruefung fuerst du ja keine durch, aber color darf ja wohl
nur blue white oder green zurueckliefern.
i<=green gibt also immer true zurueck und du haettest eine Endlosschleife.
gute Compiler sollten aber da ohnehin ein Warning rausgeben.
Herbert
--
Herbert Kremser | "On the Internet,
kremser@flinux.tu-graz.ac.at | nobody knows
kremser@sbox.tu-graz.ac.at | you're a dog."
Technical Details
Message-ID:
<47qjga$e4f@fstgal00.tu-graz.ac.at>Path:
arc1-ca.pugleaf.net!fstgal00.tu-graz.ac.at!not-for-mailReferences:
<47cqj5$d70@zeus.rbi.informatik.uni-frankfurt.de> <47lon8$ktb@news00.btx.dtag.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!fstgal00.tu-graz.ac.at!not-for-mail From: kremser@sbox.tu-graz.ac.at (Herbert Kremser) Newsgroups: de.comp.lang.c++ Subject: Re: enums Date: 8 Nov 1995 15:48:26 GMT Organization: Graz University of Technology, Austria Message-ID: <47qjga$e4f@fstgal00.tu-graz.ac.at> References: <47cqj5$d70@zeus.rbi.informatik.uni-frankfurt.de> <47lon8$ktb@news00.btx.dtag.de> NNTP-Posting-Host: freelove.tu-graz.ac.at X-Newsreader: TIN [UNIX 1.3 950824BETA PL0]