---
title: "Klass i igen."
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28011-klass-i-igen"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "frecko"
published: "2000-12-31T11:55:00.000Z"
updated: "2001-01-02T16:30:00.000Z"
replies: 2
views: 366
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28011-klass-i-igen"
---

# Klass i igen.

## #1 — frecko, 2000-12-31T11:55Z

Hej.

Programmet verkar fungera utan error, men för att det ska fungera riktigt så krävs det att jag måste anropa några metoder i mitt konto. Men var? Problemet hur man ska kunna se kontot och att kontoinnehavaren som kallas Dennis ska sätta in 500 kr och sedan ta ut 350. Sen ska man kunn fråga om aktuellt saldo och då ska kontohavarens namn skrivas ut. Ett till problem är kontoinnehavaren Carina som 400 kr på kontot, där ska man ta ut 300 kr och sätta in 250 kr. Det ska gå att skriva ut. Vet inte om koden stämmer, men problemen ligger ju in var man ska lägga alla metoder.

Koden hitills:

\#include "Konto.h"
\#include \<iostream.h\>
\#include \<cstring\>

void main() {
	Konto \*Dennis = new Konto("Dennis");
	Konto \*Carina = new Konto("Carina");
	}

Konto::Konto( char\* Dennis)
{
strcpy(itsName,Dennis);
itsSaldo = 500;

}

Konto::Konto( char\* Carina, double saldo)
{
strcpy(itsName,Carina);
setSaldo(400);
}

Konto:: sattIn(double x)
{
itsSaldo = itsSaldo + x;
}

Konto::taUt(double y)
{
if(y\>itsSaldo)
{
cout\<\<"Det gar inte att ta ut pengar du inte har!";

}
else
itsSaldo = itsSaldo - y;
}

Konto::visaKonto()

{

cout\<\<"\\nDennis: "\<\<itsName\<\<endl
\<\<"Saldo: "\<\<itsSaldo\<\<endl
\<\<"Kontonr: "\<\<itsNummer;

}
\#ifndef \_Konto_H\_
\#define \_Konto_H\_

//#pragma once

class Konto
{
public: 
Konto( char\* Dennis);
Konto( char\* Carina, double saldo );
\~Konto(){};

void setName(char\* Dennis);
char getName(char\* Carina);

void setSaldo(double saldo){itsSaldo = saldo;}
double getSaldo(double itsSaldo){return itsSaldo;}

void setNummer(int nr);
int getNummer(int itsNummer=7290) {return itsNummer;}

sattIn(double x);
taUt(double y);

visaKonto();

private:
char itsName\[6\];
double itsSaldo;
int itsNummer;

};

\#endif

Gott Nytt År

Permalänk: https://www.webforum.nu/p/28011

## #2 — Chainsaw, 2001-01-02T04:20Z

Eehhh... Tycker du har strulat till det lite. Gör en konstruktor som ser ut ungefär såhär och ta bort de andra två:
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
Konto::Konto(const char \*name, double value = 0)
{
    strcpy(itsName, name);
    setSaldo(value);
}

När du sedan skapar konton skriver du new Konto("Sverker", 42); och ersätter namnet och summan med det rätta namnet och beloppet.

Var du ska skriva ut? Tja, lägg det i main-funktionen. Typ...
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
Dennis-\>visaKonto();
Carina-\>visaKonto();

Och glöm inte bort att använda delete på dina new-skapade konton!

Permalänk: https://www.webforum.nu/p/400909

## #3 — Vetgirig, 2001-01-02T16:30Z

Din kod har en massa problem

1\. strcpy tille en variabel som är 6 tecken lång utan kontroll - risk för
överskrivning om kontonamnet är 7 tecken. Använd en sträng-klass för namnet.

2\. Att använda double för pengar leder
direkt till avrundningsfel.  1.999999
kr är inte samma som 2 kr. Gör en klass för pengarna.

Gör sedan ett liten interaktiv komandotolk i ett main program som kan
användas för att sätta in, ta ut och lista summan på kontot.

Gör du det får du säkert godkänt på skolans inlämningsuppgift.

Permalänk: https://www.webforum.nu/p/400910

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28011-klass-i-igen
