C++ brauche Hilfe bei Klassen

10/16/2010 14:32 ©rossi™#1
Hi,
da ich heute in meinem Buch wieder ein Stück weiter gekommen bin und nun bei den Klassen angekommen bin habe ich mal fleißig alles durchgelesen und den Code abgetippt.Mein Problem ist das sich der Code nicht erfolgreich durchführen lässt, weil ich irgendwas falsch gemacht hab, dabei steht es so bei mir im Buch.

Hier ma der Code:
Code:
#include <iostream>

using namespace std;

class Bankkunde
{
    private:
        string vorname;
        string nachname;
        int kto_nr;
        double kto_stand;
        double limit;
    public:
        void setVorname (string v)
        {vorname = v ;}
        string getVorname ()
        {return vorname;}
        void setNachname (string n)
        {nachname = n;}
        string gehtNachname ()
        {return nachname;}
        void setKontonr(int nr)
        {kto_nr = nr;}
        int getKontonr ()
        {return kto_nr;}
        double setKontostand (double betrag)
        {kto_stand = betrag;}
        double getKontostand ()
        {return kto_stand;}
        };
void Bankkunde::setLimit(double l)
{
    if (l >= 0)
        limit = 1;
}
void Bankkunde::einzahlen(double betrag)
{
    if (betrag > o)
        kto_stand += betrag;
}
int Bankkunde::auszahlen(double betrag)
{
    if (betrag <= 0)
        return 2; //negativer Auszahlungsbetrag
    if (kto_stand -betrag >= -limit)
    {
        kto_seand -= betrag;
        return 0; //Auszahlung ist erfolgt
    }
    else
        return 1; // Auszahlung nicht möglich
}
    }
hoffe ihr könnt mir mal wieder helfen ;)
mfg
10/16/2010 14:48 MoepMeep#2
Bei sowas bitte auch die Fehlermeldungen mitposten ;)
Aber wenn ich mir das ganze so anschaue, hast du NICHTS verstanden. Die Fehlermeldungen sagen übrigens genau aus, was du Falsch gemacht hast. Lerne diese zu Verstehen.
10/16/2010 14:52 ©rossi™#3
Quote:
Originally Posted by MoepMeep View Post
Bei sowas bitte auch die Fehlermeldungen mitposten ;)
Aber wenn ich mir das ganze so anschaue, hast du NICHTS verstanden. Die Fehlermeldungen sagen übrigens genau aus, was du Falsch gemacht hast. Lerne diese zu Verstehen.
E:\Codeblocks\C++ Lernen\klassen\main.cpp||In member function `double Bankkunde::setKontostand(double)':|
E:\Codeblocks\C++ Lernen\klassen\main.cpp|27|warning: no return statement in function returning non-void|
E:\Codeblocks\C++ Lernen\klassen\main.cpp|32|error: no `void Bankkunde::setLimit(double)' member function declared in class `Bankkunde'|
E:\Codeblocks\C++ Lernen\klassen\main.cpp|37|error: no `void Bankkunde::einzahlen(double)' member function declared in class `Bankkunde'|
E:\Codeblocks\C++ Lernen\klassen\main.cpp|42|error: no `int Bankkunde::auszahlen(double)' member function declared in class `Bankkunde'|
E:\Codeblocks\C++ Lernen\klassen\main.cpp|53|error: expected declaration before '}' token|
||=== Erstellen beendet: 4 Fehler, 1 Warnungen===|
das ist die fehlermeldung ich hab jetzt auch ein paar Fehler verbessert von denene ich deie Fehlermeldung vorher nicht gesehen hatte ;)
jetzt sieht mein code so aus :
Code:
#include <iostream>

using namespace std;

class Bankkunde
{
    private:
        string vorname;
        string nachname;
        int kto_nr;
        double kto_stand;
        double limit;
    public:
        void setVorname (string v)
        {vorname = v ;}
        string getVorname ()
        {return vorname;}
        void setNachname (string n)
        {nachname = n;}
        string gehtNachname ()
        {return nachname;}
        void setKontonr(int nr)
        {kto_nr = nr;}
        int getKontonr ()
        {return kto_nr;}
        double setKontostand (double betrag)
        {kto_stand = betrag;}
        double getKontostand ()
        {return kto_stand;}
        };
void Bankkunde::setLimit(double l)
{
    if (l >= 0)
        limit = 1;
}
void Bankkunde::einzahlen(double betrag)
{
    if (betrag > 0)
        kto_stand += betrag;
}
int Bankkunde::auszahlen(double betrag)
{
    if (betrag <= 0)
        return 2; //negativer Auszahlungsbetrag
    if (kto_stand -betrag >= -limit)
    {
        kto_stand -= betrag;
        return 0; //Auszahlung ist erfolgt
    }
    else
        return 1; // Auszahlung nicht möglich
}
    }
mfg
10/16/2010 14:53 code:blank#4
Was soll da denn überhaupt ausgeführt werden - du hast ja nicht einmal den Haupteinstiegspunkt (main()) implementiert.
Außerdem wäre es hilfreich, wenn du die Fehlermeldung, die der Kompiler ausgespuckt hat, posten würdest.

€: zu langsam

Ich würde dir übrigens empfehlen, Klassen in jeweils eine .h (Klassendeklaration) und die .c (Implementierung) Datei zu spalten - das macht das ganze deutlich übersichtlicher.
Bevor du Funktionen/Methoden implementierst musst du sie selbstverständlich auch in der Klassendeklaration deklarieren.
10/16/2010 15:07 MrSm!th#5
erstmal deine setKontostand.

die sollte void sein, da du nichts returnst, was ja auch logisch ist, bei einer set Funktion.

außerdem hast du die Funktionen nicht in der Klasse deklariert, das sagt dir der Compiler doch!

du kannst nicht
Code:
int Bankkunde::auszahlen()
{
//bla
}
schreiben, wenn du es in der klasse nicht deklariert hast.
das kommt davon, wenn man alle kurzen funktionen direkt in der klassendeklaration definieren will, dann vergisst man die funktionen zu deklarieren, die man lieber seperat definieren will.

hier mal der code sehr viel schöner:

Code:
class Bankkunde
{
    private:
        string vorname;
        string nachname;
        int kto_nr;
        double kto_stand;
        double limit;

    public:
        void setVorname (string v);
        string getVorname ();
        void setNachname (string n);
        string gehtNachname ();

        void setKontonr(int nr);
        int getKontonr ();

        void setKontostand (double betrag);
        double getKontostand ();

        void setLimit(double l);

        void einzahlen(double betrag);
        auszahlen(double betrag);
};
definieren müsstest du dann seperat, wie du es mit einzahlen und auszahlen gemacht hast.

ich weigere mich zu glauben, dass du das so aus einem buch kopiert hast, denn falls das so ist, war der typ nicht fähig genug, dieses buch zu schreiben.
so nen code anfängern vorzusetzen...gibts doch nicht. solche leute sollten keine bücher schreiben und das sind auch meistens die, die tutorials schreiben.

wie Moep aber schon sagte, das zeigt, dass du nichts verstanden hast.
weder die fehlermeldungen vom compiler, noch klassen an sich.
du sollst nicht nur copypasten, sondern auch verstehen.
10/16/2010 15:12 ©rossi™#6
Quote:
Originally Posted by MrSm!th View Post
erstmal deine setKontostand.

die sollte void sein, da du nichts returnst, was ja auch logisch ist, bei einer set Funktion.

außerdem hast du die Funktionen nicht in der Klasse deklariert, das sagt dir der Compiler doch!

du kannst nicht
Code:
int Bankkunde::auszahlen()
{
//bla
}
schreiben, wenn du es in der klasse nicht deklariert hast.
das kommt davon, wenn man alle kurzen funktionen direkt in der klassendeklaration definieren will, dann vergisst man die funktionen zu deklarieren, die man lieber seperat definieren will.

hier mal der code sehr viel schöner:

Code:
class Bankkunde
{
    private:
        string vorname;
        string nachname;
        int kto_nr;
        double kto_stand;
        double limit;

    public:
        void setVorname (string v);
        string getVorname ();
        void setNachname (string n);
        string gehtNachname ();

        void setKontonr(int nr);
        int getKontonr ();

        void setKontostand (double betrag);
        double getKontostand ();

        void setLimit(double l);

        void einzahlen(double betrag);
        auszahlen(double betrag);
};
definieren müsstest du dann seperat, wie du es mit einzahlen und auszahlen gemacht hast.

ich weigere mich zu glauben, dass du das so aus einem buch kopiert hast, denn falls das so ist, war der typ nicht fähig genug, dieses buch zu schreiben.
so nen code anfängern vorzusetzen...gibts doch nicht. solche leute sollten keine bücher schreiben und das sind auch meistens die, die tutorials schreiben.

wie Moep aber schon sagte, das zeigt, dass du nichts verstanden hast.
weder die fehlermeldungen vom compiler, noch klassen an sich.
du sollst nicht nur copypasten, sondern auch verstehen.
ok glaub ich lass das buch dann erstma liegen und greif zu nem anderen was ich gerade da habe ;)

werd dann nochmal alles in ruhe durchgehen und falls ich dann nomma Probleme haben sollte melde ich mich nocheinmal ;)
€dit: kennt zufällig jemand das Buch : c++ Lernen und professionell anwenden von ulla Kirch-prinz und Peter Prinz und weiß ob es empfehlenswert ist ?
mfg
10/16/2010 15:31 MoepMeep#7
Mich würde interessieren, welches Buch du da verwendet hast.



Da fällt mir ein, ich komm mit den Fehlermeldungen von VS deutlich besser klar als mit denen von Code::Blocks. Vorallem die error-codes sind sehr praktisch bei ausgefallerenen Fehlern, kannst du dir ja mal anschauen ;D
Code:
Fehler	1	error C2039: 'setLimit': Ist kein Element von 'Bankkunde'
Fehler	2	error C2065: 'limit': nichtdeklarierter Bezeichner
Fehler	3	error C2039: 'einzahlen': Ist kein Element von 'Bankkunde'	 
Fehler	4	error C2065: 'o': nichtdeklarierter Bezeichner
Fehler	5	error C2065: 'kto_stand': nichtdeklarierter Bezeichner
Fehler	6	error C2039: 'auszahlen': Ist kein Element von 'Bankkunde'
Fehler	7	error C2065: 'kto_stand': nichtdeklarierter Bezeichner
Fehler	8	error C2065: 'limit': nichtdeklarierter Bezeichner
Fehler	9	error C2065: 'kto_seand': nichtdeklarierter Bezeichner
Fehler	10	error C2059: Syntaxfehler: '}'
Fehler	11	error C2143: Syntaxfehler: Es fehlt ';' vor '}'	
Fehler	12	error C2059: Syntaxfehler: '}'
10/16/2010 15:32 MrSm!th#8
[Only registered and activated users can see links. Click Here To Register...]

kann ich dir empfehlen
zu deinem vorschlag kann ich nix sagen
10/16/2010 15:36 ©rossi™#9
Quote:
Originally Posted by MoepMeep View Post
Mich würde interessieren, welches Buch du da verwendet hast.
Kein Problem ;)
Das Buch was ich verwendet habe, war c++ von walter saumweber und vom Markt+ Technik verlag.
@MrSm!th habe schon öfter gehört das dieses Buch gut sein soll, wirds mir auch gern holen scheitert nur am vorhandenen Geld da ich auf einen Laptop spare :p Alle meine Bücher bis jetzt waren aus der Bücherei :p

mfg
10/16/2010 16:04 MoepMeep#10
Das Buch ist in meinen Augen das nonplusultra, allerdings als anfänger nur bedingt zu gebrauchen :x

Markt+Technik Bücher sollen generell der größte scheiß sein. ^^

[Only registered and activated users can see links. Click Here To Register...]

Das Buch kenn ich zwar nicht, allerdings einen der Autoren und der ist ein verdammt guter Lehrer ;)
10/16/2010 16:07 ©rossi™#11
Quote:
Originally Posted by MoepMeep View Post
Das Buch ist in meinen Augen das nonplusultra, allerdings als anfänger nur bedingt zu gebrauchen :x
Ok dann les ich erstma was anderes ;)

mfg
10/16/2010 16:13 MoepMeep#12
Quote:
Originally Posted by Crossi xD View Post
Ok dann les ich erstma was anderes ;)

mfg
Hab noch was reineditiert ;)
10/16/2010 16:38 ©rossi™#13
Quote:
Originally Posted by MoepMeep View Post
Das Buch ist in meinen Augen das nonplusultra, allerdings als anfänger nur bedingt zu gebrauchen :x

Markt+Technik Bücher sollen generell der größte scheiß sein. ^^

[Only registered and activated users can see links. Click Here To Register...]

Das Buch kenn ich zwar nicht, allerdings einen der Autoren und der ist ein verdammt guter Lehrer ;)
jo ganz net ich les gerade das : [Only registered and activated users can see links. Click Here To Register...]

mfg :)
10/16/2010 22:32 black0utCpp#14
Außerdem würde ich dir empfehlen nicht sofort bei jedem Problem hier einen Thread zu erstellen sondern es SELBER zu lernen so wird das wohl oder übel nichts :-( !
Denn :
Selbst erlerntes behält man leichter als Lösungen , die man von irgendjemand "gesteckt" bekommt .

Buchtipps:

(galileocomputing == Sehr guter Verlag)

C++ von A bis Z von Jürgen Wolf
Einstieg in C++ von Arnold Willemer

Greetz Black0ut!