[linux-l] Designfrage bzgl. Deckverwaltung

Frank Reker frank at reker.net
Sa Okt 22 00:28:45 CEST 2005


Am Fri 21. Oct 2005 21:00 +0000 schrieb Axel Weiß:

>Der Prozessor ist froh, wenn er Zahlen sieht ;). Du willst keine Zahlen 

full ack!

>z.B. in CardDeck.h:
>
>typedef enum Farbe {Rot, Gelb, Blau, Pink} Farbe;
>typedef enum Wert {Clown, Rowdy, Kind, Schwester, Bruder} Wert;
>
>struct Card{
>	const Farbe farbe;
>	const Wert wert;
>	// Methoden
>};
>
>inline bool operator<(const Farbe &f1, const Farbe &f2){
>inline bool operator<(const Wert &w1, const Wert &w2){
>inline bool operator<(const Card &c1, const Card &c2){


und wenn du jetzt noch farbe und wert in ein int zusammenfasst, dann
kannst du dir die operator ueberladung sparen.
z.b. es gibt <=4 farben und <=8 werte je farbe.
dann nimm die unteren 3 bit fuer den wert und die naechsten 2 bit 
fuer die farbe. kannste mit makros machen wie in meiner ersten mail,
wenn du aber lieber structs bevorzugst - voila:

typedef struct prop { u_int32_t wert:3, farbe:29; } prop;
typedef union karte { u_int32_t z; prop p; } karte;

karte card1, card2;

card1.p = (prop){rot,bruder};
card2.p = (prop){blau,clown};
if (card1.z < card2.z) ...

farbwert erhaelste dann: 
if (card1.p.farbe == pink)...

und das ganze ohne teure operator overloading oder gar 
properties klassen.

simple c - kannste ja meinetwegen in ner klasse kapseln.



-- 
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/20051022/78d2d3e5/attachment.sig>


Mehr Informationen über die Mailingliste linux-l