[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