04. januar 2006 - 14:16Der 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?
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 :)
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
Synes godt om
Ny brugerNybegynder
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.