[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