Vonbo Skrevet 19. september 2005 Del Skrevet 19. september 2005 Hei. Jeg skal prove meg paa c++, men faar ikke helt klassene til aa snakke sammen. Har en klasse som skal inneholde to tall som skal legges sammen, ogsaa har jeg en annen klasse, i egen fil, som skal kunne sende 2 tall for utregning i den forste klassen. F.eks. Regn.adder(tall1, tall2); Hva maa jeg gjore? Koden over er i klassen med main-metoden. Jeg faar bl.a feil paa at klassen Regn ikke er deklarert. Hva maa jeg gjore? Har sett at det finnes mange forskjellige typer filendelser i c++, men jeg bruker .cpp paa begge. Riktig? Takk for svar. Lenke til kommentar
christt Skrevet 19. september 2005 Del Skrevet 19. september 2005 Legg med kode, så blir det litt lettere å hjelpe. Lenke til kommentar
Peter Skrevet 19. september 2005 Del Skrevet 19. september 2005 Dersom klassen ikke er deklarert må du antakelig gjøre slik: Regn A; A.adder(1,2); Lenke til kommentar
Vonbo Skrevet 19. september 2005 Forfatter Del Skrevet 19. september 2005 (endret) Skulle saa gjerne, men har laptopen hjemme. Sitter paa internettkafe. Skal prove aa gjenskape litt: #include <iostream> class Regn { int tall1, tall2; public: Regn(int a, int b){ tall1 = a; tall2 =b; } int adder(tall1, tall2){ int temp = tall1 + tall2; return temp; } } Og klassen med main ser noe slik ut (kortversjon for aa faa fram problemet): #include <iostream> int main(){ int tall1, tall2; cout << "Tast inn to tall som skal adderes"; cin >> tall1; cin >> tall2; Regn.adder(tall1, tall2); return 0; } Dette funker ikke, men jeg er vel i naerheten av noe? Jeg ville laget et objekt av klassen Regn, men fikk d ikke til. Kan noe vise meg veien ? Endret 19. september 2005 av Vonbo Lenke til kommentar
Vonbo Skrevet 19. september 2005 Forfatter Del Skrevet 19. september 2005 Ja, Nazgul, jeg trodde ogsaa d, men fikk feil i kompileringen over at den ikke finner Regn::Regn() e.l. (husker ikke feilmeldingen helt, men noe slik) Mulig jeg tenker litt for mye java her.. Lenke til kommentar
christt Skrevet 19. september 2005 Del Skrevet 19. september 2005 Du har ingen default contructor. Du kan eventuelt slenge inn en: Regn(); under public i klassedeklarasjonen din. Alternativt kan du deklarere adder() som static og kalle den slik: Regn::adder(tall1, tall2); Lenke til kommentar
Peter Skrevet 19. september 2005 Del Skrevet 19. september 2005 Du har ingen default contructor. Du kan eventuelt slenge inn en: Regn(); under public i klassedeklarasjonen din. Alternativt kan du deklarere adder() som static og kalle den slik: Regn::adder(tall1, tall2); Jupp, legg inn default constructor. Du har allerede en ctor, Regn(int a, int b), men du trenger en default ctor også på formen Regn() { } Mitt alternativ der ville vært en ctor som dette: Regn() : tall1(0), tall2(0) { } Denne gjør at når klassen blir opprettet, så vil tall1 og tall2 bli satt til 0. Dersom du ikke gjør dette, er de udefinerte, noe som ikke er bra. F.eks om du prøver å regne med noe som er udefinert, eller skrive det ut. I Regn(int a, int b) trenger du ikke gjøre dette, for der blir tallene definert som tall1=a og tall2=b En siste ting jeg vil anbefale å lese litt på, er inline definisjon av funksjoner. Uten å gå i veldig detalj, da dette kan bli forvirrende, så har du definert alle funksjonene dine som inline i klassen Regn. For små funksjoner, er dette greit, men for litt større funksjoner, vil dette øke størrelsen på programfilen din betraktlig. Lenke til kommentar
Dead_Rabbit Skrevet 19. september 2005 Del Skrevet 19. september 2005 (endret) Gjør funksjonen static, så trenger du ikke å opprette et eget objekt for det Edit: Oops. Leste ikke så grundig gjennom alle postene Endret 19. september 2005 av zirener Lenke til kommentar
Vonbo Skrevet 19. september 2005 Forfatter Del Skrevet 19. september 2005 Takk, nå har jeg fått ned antallet på feilmeldingene. Men det gjennstår en jeg ikke får orden på: undefined reference to `Regn::Regn()' Feilmld kommer på denne linja: Brok Ny; Takker Lenke til kommentar
Peter Skrevet 19. september 2005 Del Skrevet 19. september 2005 Sorry, er ikke tankeleser på noen som helst måte. Du må nok poste den nye koden din... Lenke til kommentar
Dead_Rabbit Skrevet 19. september 2005 Del Skrevet 19. september 2005 Virker som at kompilatoren ikke finner definisjonen av Regn::Regn() Lenke til kommentar
Peter Skrevet 19. september 2005 Del Skrevet 19. september 2005 Virker som at kompilatoren ikke finner definisjonen av Regn::Regn() Nei, (tror) han postet selve koden i en ny tråd, der vi fikk løst problemet. 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å