Gå til innhold

Globale variabler, pointere og masse mikkmakk


Anbefalte innlegg

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 :p

 

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 :p 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 :p

 

Koden kan lastes ned på hjemmesiden min (jonask.com) under C++. Prosjektet heter SubHunter =)

Lenke til kommentar
Videoannonse
Annonse

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 av kjetil7
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...