Gå til innhold

Objektpekere og medlemer


Anbefalte innlegg

class aclass

{

public:

int function(aclass &a);

protected:

int tabel[10];

int integer;

};



int aclass::function(aclass &a)

{

if((*a).tabel[(*a).integer-1]<(*this).tabel[(*this).integer-1])

{

 return 1;

}

}

 

Når jeg kompilerer dette får jeg bare følgende feilmeldinger:

F:ProgramsVisual C++ 6.0MSDev98Biner.cpp(15) : error C2100: illegal indirection

F:ProgramsVisual C++ 6.0MSDev98Biner.cpp(15) : error C2100: illegal indirection

 

Som dere ser bruker jeg vc++ 6.

 

Såvidt jeg husker er dette måten å bruke objekt pekere på: (*objektpeker).funksjon/var/objekt, eller husker jeg feil??

 

Medlemsfunksjonen må da ha tilgang på medlemene (variablene) til objektet...

 

Har prøvd å fjerne thispekern, men det hjelper ikke.

 

Er det noen som har noen idè om hva som kan være feil, ville jeg være takknemlig.

 

PS. denne koden er bare for referanse. Jeg har bare gjort det slik for å isolere feilen.

Lenke til kommentar
Videoannonse
Annonse

Funksjonen din skal/kan se slik ut:


int aclass::function(aclass &a) 

{ 

if(a.tabel[a.integer-1] < tabel[integer-1] )

{

 return 1;

}



return 0; //la til denne... alle veier må returnere en verdi

}

 

Du kan selvfølgelig føye til this foran tabel og integer hvis du ønsker det (slik som du gjorde i eksemplet ditt.

 

 

Såvidt jeg husker er dette måten å bruke objekt pekere på: (*objektpeker).funksjon/var/objekt, eller husker jeg feil??

Problemet er bare at aclass &a ikke er noen peker, men en referanse. Det er ikke det samme. Hvis du ønsker å bruke en peker skriver du: aclass *a.

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...