Gå til innhold

Konstruktørar i forbindelse med arv


Anbefalte innlegg

Eg har ein klasse Eigar som arver frå 2 klassar Person og Kjoretoy:

Her er litt av headerfila til Eigar:

 

....

class Eigar : public Person, public Kjoretoy

{

public:

Eigar();

...........

private:

int antal;

};

 

Her er litt av cpp fila til eigar

.....

Eigar::Eigar()

:antal(0)

{

}

....

 

Når eg prøver å kompilera programmet får eg ein linking error undefined reference to Eigar::Eigar()`

Dersom eg ikkje kaller standarkonstruktøren i main fila går det fint å kompilera. Og dersom eg tar vekk standarkonstruktøren frå cpp fila og legg den inn i headerfila går det også fint å kompilera og kjøra programmet. Dvs at det som før var:

 

Eigar::Eigar();

Forandrer eg til

Eigar::Eigar():antal(0) {};

 

Kan eg ikkje skriva inn standarkonstruktøren(og spesialkonstruktøren) inn i cpp fila, må alt vera i headerfila? Eg tok ikkje med resten av programmet fordi eg trudde ikkje det var særlig relevant i forhold til problemstillinga.

Er det nokon snille programererar der ute som har lyst å opplysa meg litt?

Lenke til kommentar
Videoannonse
Annonse
Da vil jeg tro at problemet er at du ikke linker med cpp-fila.

 

Hehe takk skal du ha, eg hadde jobba lenge i går og var for sleten til å oppdaga det. Eg hadde inkludert headerfila i cpp fila, men av ein eller annan grunn hadde eg gløymt å lagt til cpp fila mi i prosjektet.

Det var litt frustrerande fordi eg var heilt sikker på at det gjekk ann :thumbup:

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