🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
4 messages
4 total messages Started by Benjamin Baermann Fri, 03 Nov 1995 10:23
enums
#719
Author: Benjamin Baermann
Date: Fri, 03 Nov 1995 10:23
26 lines
1211 bytes
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);
}


nicht mehr moeglich sind. Ich gebe ja zu, dass das nicht typkorrekt ist,
allerdings wuerde doch eine warning hier wirklich ausreichen, oder. Ich
finde fuer solche Sachen sind enums doch eigentlich da ;-)

Compiler: 	HP-UX-9 CC 	-> Error
	  	g++ 2.5.8	-> Warning
	 
Gruesse, Benni
-- 
benni@informatik.uni-frankfurt.de|http://www.uni-frankfurt.de/gnomic/hello.html
    "Deshalb, Leute, die glauben, dass Computer werden nicht koennen, wie
      Menschen zu denken, auch glaubt nicht in Maschine-Uebersetzung."
Re: enums
#743
Author: Karl-Heinz Krause
Date: Mon, 06 Nov 1995 18:46
28 lines
1148 bytes
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. 


Karl-Heinz Krause
Re: enums
#748
Author: Herbert Kremser
Date: Wed, 08 Nov 1995 15:48
39 lines
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." 
Re: enums
#762
Author: Thomas Lehner
Date: Fri, 10 Nov 1995 14:36
24 lines
1192 bytes
kremser@sbox.tu-graz.ac.at (Herbert Kremser) wrote:

>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};
>: 

Mein Posting bezieht sich zwar auch nicht auf Deine Frage, aber ich
wollte es unbedingt loswerden.

Ich mache es immer so:  

     enum color {blue= 0, white, green, num_color};

Danke !
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads