Gå til innhold

Kalle metoder i annen klasse?


Anbefalte innlegg

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
Videoannonse
Annonse

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

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