Gå til innhold

Hjelp til pekerreferanser


Gjest Gjest slettet-ld9eg7s96q

Anbefalte innlegg

Heisann

 

Jobber litt med et program og har støtt på litt hodebry vedr. pekere. Programmet jeg lager genererer en todimensjonal matrise. Hver enkel rute i dette programmet er representert med et objekt som jeg har kalt 'gridHelper'. Matrisen blir generert via:

 

private:
 gridHelper *rute[100][100];

 

Fra en annen klasse jeg kaller 'Monster'. Dette er altså en matrise som kan inneholde 100x100 ruter som dere sikkert ser.

 

Saken er at jeg gjerne vil ha et tredje objekt. Alle gridHelper (rutene) objektene skal peke på den samme adressen/objektet. Monster objektet tar seg forøvrig av initialiseringen av dette objektet. Jeg har prøvd å initialisere objektet i Monster objektet og sendt adressen til en peker i gridHelper via konstruktøren. Men det ender bare opp med at et unikt objekt blir lagd for hver rute.

 

Svaret er sikkert enkelt, men det er en stund siden jeg har programmert i C++ og jeg er litt shaky med henhold til syntaksen, jeg gjør nok noe feil som er vanskelig for meg å få øye på, men folk med langt mer erfaring kan sikkert finne en enkel løsning på dette. Forøvrig:

 

monster.h:

 

private:
 gridState state; // Objektet rutene skal peke på
 gridHelper *rute[100][100];

 

gridhelper.h:

 

public:
 gridHelper(gridState& gState);
private:
 gridState *state; // Pekeren til objektet initialisert av monster objektet

gridHelper::gridHelper(gridState& gState) {

state = &gState;
}

 

Forslag?

Lenke til kommentar
Videoannonse
Annonse

Nå er det litt vanskelig å forstå hva som er problemet. Men ser du bruker pekere noen plasser og referanser ander plasser. Det å blande disse tingene gjør at man ofte blir forvirret. Poenget med referanser at man kan bruke de som vanlige variabler og ikke som pekere, selv om de i grunn egentlig er noe som minner om pekere.

 

Hva om du endrer gridhelper.h til noe slikt, og bruker pekere i stede for referanser.

 

public:
gridHelper(gridState *gState);
private:
gridState *state; // Pekeren til objektet initialisert av monster objektet


gridHelper::gridHelper(gridState *gState) {
state = gState;
}

Endret av etse
Lenke til kommentar
Gjest Gjest slettet-ld9eg7s96q

Herregud, Haha! Tror jeg må sette meg ned med en god c++ bok og lese igjennom kapittelet med pekere igjen. Det er snart 17 år siden jeg lærte C++ på skolen, men allikevel. Forslaget ditt fungerte ypperlig. Tusen takk!

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...