jonask Skrevet 3. juli 2004 Del Skrevet 3. juli 2004 Heisann hoppsann! Sitter og lærer meg c++, og sliter litt... Jeg har et prosjekt, bestående av 2 cpp filer og en header fil. jeg har et problem, som jeg ikke klarer å løse på to forskjellige måter Nå vil jeg gjerne ha noen få globale variabler. Har includet H filen i begge Cpp'ene og prøvd å definere de variablene jeg vil skal være globale i h fila. det funker ikke. da maser den om at ting blir deffiner flere ganger i main.obj. Jeg har prøvd med sånn #ifndef BLAH og #define BLAH greier, no deal... Så spørsmålet er, hvordan lager jeg variabler som kan leses fra flere enn en cpp fil? løsning som jeg prøvde: i stedet for globale variabler kan jeg heller lage funksjoner som sender variabler til hverandre. Så funksjonen MovePlayer ikke henter playerxpos fra globalen, men heller får den passert til seg gjennom MovePlayer(playerxpos). Problemet her er at når jeg forandrer playerxpos inne i MovePlayer blir ikke denne forandringen sendt tilbake til der MovePlayer ble kallt opp. dvs, playerxpos forrandrer seg inne i Moveplayer(), men denne forandringen forsvinner når funksjonen er over jeg kunne jo returnert verdien, og brukt playerxpos = moveplayer(xpos); men det MÅ da finnes en bedre måte? hva hvis en funksjon skal forrandre på mer enn èn variabel for eksempel? Løsning jeg lekte med: lage klasser, med Player::move{x++;} hvor x er en verdi i strukturen til Player. Virka litt tungvindt, og jeg sleit fært fordi klassen min skulle være en linked list. Jeg fant ingen måte å få minne possisjonen til selve denne klassen. så jeg kunne kjøre en delete "me"; hvis dere skjønner? Håper jeg har klart å forklare meg ut i fra det lille jeg kan Koden kan lastes ned på hjemmesiden min (jonask.com) under C++. Prosjektet heter SubHunter =) Lenke til kommentar
kjetil7 Skrevet 3. juli 2004 Del Skrevet 3. juli 2004 (endret) Bruk extern . globals.cpp: const int MYGLOBAL = 0xff; main.cpp: extern const int MYGLOBAL; int main() { std::cout << MYGLOBAL << std::endl; } Eventuelt legg "extern const int MYGLOBAL;" inn i en header som du inkluderer. Endret 3. juli 2004 av kjetil7 Lenke til kommentar
jonask Skrevet 4. juli 2004 Forfatter Del Skrevet 4. juli 2004 Det funka bra=) tusen takk! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå