21. august 2002 - 00:03Der er
7 kommentarer og 2 løsninger
klasse konvertering
Jeg har en masse klasser som har det tilsammen at de skal konverteres til et 'seriel' byte array. Et eksempel på en klasse kunne se sådan ud: class C1 { int v1; float v2; DWORD v3; byte v4[15]; }; en anden klasse kunne se sådan ud class C2 { int v1; byte v2[7]; byte v3[255]; };
det eneste som er fælles for de klasser er den første variabel v1 som angiver hvilken type classe der er tale om. Indtil viderer har jeg skrevet en funktion for hver enkelt klasse hvor jeg 'manuelt' serialiserer dem. KAn det ikke gøres på en meget nemmerer måde ? Jeg tænkte feks på om det var muligt at caste de klasser ind i et byte array eller noget med reinterpret_cast! Jeg kan bare ikke få det til at fungerer helt... det vil sige jeg kan få det til at fungerer lidt.. hvis jeg gør således caster den nemlig den første variabel. men ikke de andre
Jyske Bank er rykket ind i Glaskuben på Kalvebod Brygge, et markant byggeri i hjertet af København. Knap 1.000 arbejder her, heraf 200 i IT, med nye rammer for samarbejde, innovation og udvikling.
Du skal lave en basis-klasse, som indeholder det som er fælles for de to, og så lave nedarving fra dem. I din basis-klasse laver du så en virtuel function -serialize- som du definerer i dine nedarvede klasser. På den måde kan du bruge serialize metoden i din standard funktion, som så bare tager basis-klassen som parameter:
class CX { protected: // kun denne eller nedarvede klasser int v1; public: virtual byte* serialize(void); };
class C1 : CX { protected: // kun denne eller nedarvede klasser // int v1; findes i CX float v2; DWORD v3; byte v4[15]; public: virtuel byte* serialize(void); }; byte * C1::serialize(void) { return v4; }
en anden klasse kunne se sådan ud class C2 : CX { protected: // Kun denne eller nedarvede klasser. // int v1; findes i CX byte v2[7]; byte v3[255]; public: virtuel byte* serialize(void);
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.