Avatar billede gruber03 Nybegynder
15. november 2000 - 18:36 Der er 5 kommentarer og
1 løsning

Total Newbie spørgsmål om klasser!!

Hej
Jeg håber ikke at der er nogen der bliver fornærmede, men jeg skal bruge lidt hjælp!
Jeg har kastet mig hovedkuls ud i programmeringens verden, men er ved at drukne nu.

Jeg prøver at lave en klasse (jeg kalder den Currency), som skal kunne håndtere operationer på blandede valutaer.Den skal defineres så et objekt kan oprettes således:

Currency c1 (100,\"usd\"),c2(225.59,\"dm\"), c3, c4(200);

Der skal altså med andre ord defineres flere operationer til klassen.
Det skal være muligt at udføre operationer som f.eks:
c3=c1+c2;
og
c3=c1+100;
hvor resultatet af c3 er summen af værdierne i c1 og c2, konverteret til den valuta der fremgår af c1, eller en forudbestemt defineret valuta (i klassen).

Jeg har nogenlunde styr på at definere en simpel klasse, men i denne her har jeg problemer med at overskue det hele.

jeg har problemer med operatorerne, constructorerne og til dels også mainprogrammet, men jeg går ud fra at det kommer af sig selv senere.

Jeg håber at der er en venlig sjæl der kan hjælpe mig grundlæggende videre, da jeg er ved at give op.

På forhånd tak for hjælpen!

Gruber
Avatar billede rm Nybegynder
16. november 2000 - 01:20 #1
her er starten på class\'en:
#include <string.h>
#define USD 8.69
#define GBP 14.54

class Currency
{
    public:
       
        // konstroktoren med argumenter
        Currency (int belOb, const char* valuta)
        {
            if(strcmp(valuta,\"usd\"))
            {
                saldo = belOb * (int)USD;
            }
            else if(strcmp(valuta,\"gbp\"))
            {
                saldo = belOb * (int)GBP;
            }
            //...
           
        }

        //konstroktoren uden argumenter
        Currency () { saldo = 0;}
       
        //eks på hvordan du for værdier ud
        int getUsd() { return saldo / (int)USD;}

        //eks på hvordan du sæter en ny værdi
        void setUsd(int belOb) { saldo = belOb * (int)USD;}

    private:
        // saldo i dkr
        int saldo;
};
Avatar billede lbs Nybegynder
16. november 2000 - 01:27 #2
ok her er lidt eksempler på hvordan du gør

Det her vil stå i headerfilen:


class Currency{
  //det her er to constructors
  Currency();
  Currency(int AMOUNT);

  //eksempel på operator overloading:
  Currency operator+(Currency rhs);

  Currency operator+(int rhs);

private:
  int amount; 
}


og så i sourcefilen:


//constructors:
Currency::Currency(){
  //når brugeren kalder med den tomme constructor sætter vi amount til 0
  amount = 0;
}

Currency::Currency(int AMOUNT){
  amount = AMOUNT;
}

//operator overloading

Currency operator+(Currency rhs){

//lidt forklaring:
//når vi overloader skal det ses sådan her:
//hvis vi har c3 = c1 + c2
//så kan c1\'s element tilgås uden noget foran og c2 som
//det vi har kaldet vores parameter til funktionen
// og vi skal returnere en hel ny instans af vores klasse:

Currency retVal;
retVal = Currency(amount + rhs.amout) ;

return retVal;
}


Currency operator+(int rhs){

Currency retVal;
retVal = Currency(amount + int) ;

return retVal;
}


Sådan, nu kan du se hvordan det fungerer de to ting du skal bruge..
koden med konvertering af valuta skal du vist selv finde ud af :)
Avatar billede gruber03 Nybegynder
16. november 2000 - 20:43 #3
tak for hjælpen, til jer begge.
Jeg blev inspireret af jer begge, men gik alligevel i en lidt anden retning, men det virker fint.
Avatar billede gruber03 Nybegynder
16. november 2000 - 20:44 #4
hov jeg kom vist til at afvise et af svarene, det var ikke meningen sorry....
Avatar billede lbs Nybegynder
16. november 2000 - 22:40 #5
Det var da ikke så fair, bør der ikke gøres noget ved det?
Avatar billede gruber03 Nybegynder
17. november 2000 - 10:40 #6
hvad kan jeg da gøre ??? er det ikke for sent?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester