[linux-l] Designfrage bzgl. Deckverwaltung

Frank Reker frank at reker.net
Do Nov 10 12:01:02 CET 2005


Am Wed 09. Nov 2005 22:49 +0000 schrieb Steffen Dettmer:

>* Axel Weiß wrote on Sat, Nov 05, 2005 at 12:25 +0100:
>> enum E {Name1, Name2, Name3, count_E} e;
>> for (e=Name1; e<count_E; ++e) ...
>
>Da war ich ja erst überrascht, aber es geht gar nicht:
>error: no match for `++ main()::E&' operator

obiger code funktioniert in c. c++ hat ein etwas strengeres
typkonzept. es ist hier noetig explizit zu casten:

for (e=(int)Name1; e<(int)count_E; ++(int)e) ...

dann funktioniert's auch in c++.

>enum E {Name1 = 0x01, Name2 = 0x10, Name3 = 0x03, count_E = 0x00} e;

dann hast du ne ziemlich lang laufende schleife, halt bis zum
naechsten integer overflow.

>>     typedef enum farbe{
>>         Karo  = 9,
>>         Herz  = 10,
>>         Pik   = 11,
>>         Kreuz = 12
>>     } farbe;
>
>Dann geht aber "spielwert = farbe * spiel" nicht, weil farbe ja eben
>kein int ist, und nichtmal "Karo < Pik" geht noch.

casten! - s.o.: c castet hier automatisch, c++ nicht.



>Na ja, vielleicht bin ich da besonders abgeneigt, weil ich schon
>ziemlich viel code von "flexiblen" (GEHACKTEN!) Zeiger"algorithmik" auf
>saubere Referenz"algorithmik" umstellen musste.

is natuerlich geschmacksache. aber ich benutze fast nie referenzen.
bei einem pointer sieht man wenigstens was man uebergibt. referenzen
erschweren find ich, die lesbarkeit des codes.




-- 
Don't worry be happy ...
Ciao Frank
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20051110/9218185e/attachment.sig>


Mehr Informationen über die Mailingliste linux-l