Avatar billede mat Nybegynder
04. januar 2006 - 14:16 Der er 6 kommentarer og
1 løsning

static members

Hej

Jeg har et program hvor jeg gerne vil give alle mine objekter af en given type et unikt id. Til det tænkte jeg jo at et static member som jeg kunne inkrementere i contructoren lød som en idé?

Mit program består (bl.a) af en superklasse, hvori denne static ID residerer, klassen kaldes GameObjectBase. Der er så to klasser der nedarver fra denne (GOCube og GOSphere). Disse klasser har hver to constructors, hvoraf den ene bruges til at sætte en prototype, den anden bruges ved kloning af denne prototype.

I min superklasse er min static deklareret public ved:

static int ID;

Dette er i GameObjectBase.h, i GameObjectBase.cpp initierer jeg den så (allerøverst i klassen, udenfor nogen metoder) med:

int GameObjectBase::ID = 0;


Når jeg så kloner mine nedarvede objekter (GOCube og GOSphere) har jeg i den constructor en uniqueID, der initieres med:

uniqueID = GameObjectBase::ID; // assignes bare til 0 til debugging

Men når jeg prøver at udskrive mine uniqueID'er (som i dette tilfælde bare skal give 0 for alle objekter) får jeg et sjovt resultat; Det første objekt udskriver uniqueID = 0, men det andet giver mig uniqueID = 1009197166

Giver det nogen mening, og vigtigere, er det nogen der kan se faldgruberne i min fremgangsmåde udfra det beskrevne?

mvh mat
Avatar billede jpk Nybegynder
04. januar 2006 - 14:23 #1
Er du HELT sikker på du får sat uniqueID = GameObjectBase::ID;?
Avatar billede mat Nybegynder
04. januar 2006 - 14:40 #2
Jeg er rimelig sikker, min kloning fungerer tilsyneladende efter hensigten så den constructor må blive kaldt.
Avatar billede jpk Nybegynder
04. januar 2006 - 14:43 #3
D.v.s du sætter uniqueID i 4 constructors? (2*GOCube og 2*GOSphere)
Avatar billede mat Nybegynder
04. januar 2006 - 15:38 #4
nej i 2, GOCube og GOSphere instancieres og bliver sat som prototyper, til dette bruges en constructor, derefter klones de. Kloningen instancierer reelt en GOCube og en GOSphere men med en anden constructor til dette formål. Det er i denne "klon constructor" jeg prøver at sætte "uniqueID".

MEN; Som vi lige opdagede hjælper det jo ikke ret meget når vores prototype factory returnerer objektet istedet for at klone det :S

Problemet er dermed løst, så det var slet ikke et problem med min static, men med vores prototype factory.

..men hvis du vil lægge et svar får du point for at lede mig på sporet ved at kigge nærmere på klon constructoren, mange tak for assistancen :)

mvh mat
Avatar billede jpk Nybegynder
04. januar 2006 - 15:41 #5
Glad for at kunne hjælpe...
Avatar billede mat Nybegynder
04. januar 2006 - 17:43 #6
takker :)
Avatar billede vivian22 Nybegynder
22. juli 2012 - 01:53 #7
Hej,
hvordan laver du? så jeg ville gerne være din friend.here er min e-mail vivianawori@yahoo.com
Jeg vil sende dig billeder i min næste post OK
og jeg har noget improtant at fortælle dig
vivianawori@yahoo.com
fra Vivian
bedes du besvare




Hello,
how are you doing? please i want to be your friend.here is my e-mail vivianawori@yahoo.com
i will send you photo in my next mail OK
and i have something improtant to tell you
vivianawori@yahoo.com
from vivian
please reply
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester