Konto-Programm mit C++ (Objektorientiertes Programmieren)
-
Hallo
ich muß ein Programm schreiben mit dem ich ein Konto "verwalten" kann.
Es soll den Kontostand und Ein und Auszahlungen können.Bis hier hab ich es schon mal gemacht
#include<iostream.h> class konto { private: float kontostand(); public: void einzahlen (float betrag); void auszahlen (float betrag); void ausgabe (float kontostand); }; void konto::einzahlen(float betrag) { kontostand=kontostand + betrag; } void konto::auszahlen(float betrag) { if(kontostand>betrag) { kontostand=kontostand-betrag; } else { cout<<"Leider ist die Auszahlung von"<<betrag<<"EUR nicht möglich"<<endl; } void konto::ausgabe() { cout<<ausgabe()<<endl; } } void main() { konto k; k.kontostand(1000); k.einzahlen(1000.67); k.auszahlen(154.87); }Mein Compiler gibt mir dann das aus
--------------------Konfiguration: konto - Win32 Debug--------------------
Kompilierung läuft...
konto.cpp
konto.cpp(18) : error C2296: '+' : Ungültig, da der linke Operand vom Typ 'float (__thiscall konto::)(void)' ist
konto.cpp(24) : error C2296: '>' : Ungültig, da der linke Operand vom Typ 'float (__thiscall konto::)(void)' ist
konto.cpp(26) : error C2296: '-' : Ungültig, da der linke Operand vom Typ 'float (__thiscall konto::*)(void)' ist
konto.cpp(41) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
Fehler beim Ausführen von cl.exe.konto.exe - 4 Fehler, 0 Warnung(en)
Kann mir jemand sagen was das bedeutet und wie ich das beheben kann?
Danke im voraus
Otze2000
-
Nach schnellen durchschauen würde ich sagen, entferne die klammern bei
float kontostand();denn so wie du das deklariert hast, ist es eine Funktion, und keine Variable die du sicherlich wolltest.
Gruß Matthias
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
und danke für die Antwort.
Macht auf jeden Fall sinn aber manchmal sieht man es einfach nicht.
Nun bekomme ich einen neuen Fehler.
:\C++ übungen\aufgabe7\7aufgabe.cpp(41) : fatal error C1001: INTERNER COMPILER- FEHLER (Compiler-Datei "msc1.cpp", Zeile 1794)
Woran kann das liegen?
Hoffe auf neue hilfe
-
Also äääh bei deinem Programm sehe ich einige Fehler Oo
Zuerst mal der Header:
//#include <iostream.h> //veraltet #include<iostream> //Schon besser using namespace std;Dann versuchst du auf konto::kontostand zuzugreifen, was aber 1. privat und 2. nicht deiniert ist.
3.:
void konto::ausgabe() { cout << ausgabe() << endl; //WTF? }Hier versucht die Funktion sich selber auszugeben, aber sie ist void, das ergibt einen Fehler.
Dann hast du noch eine geschweifte Klammer falsch gesetzt:
void konto::auszahlen(float betrag) { if(kontostand > betrag) { kontostand = kontostand-betrag; } else { cout << "Leider ist die Auszahlung von" << betrag< <"EUR nicht möglich" << endl; } void konto::ausgabe() { cout << ausgabe() << endl; //WTF? } }Wird zu:
void konto::auszahlen(float betrag) { if(kontostand > betrag) { kontostand = kontostand-betrag; } else { cout << "Leider ist die Auszahlung von" << betrag< <"EUR nicht möglich" << endl; } } void konto::ausgabe() { cout << ausgabe() << endl; //WTF? }Und bitte bitte bitte gewöhne dir eine vernünftige Einrückung deines Codes an, das von dir da oben ist echt unmöglich.
-
die konto geschichten erinnern mich schwer ans erste Semester

-
Wirtschaftsinformatiker oder was?
-
ne Medien-Informatiker...
-
Hallo und danke für die Hilfe.
Hab es mit Eurer hilfe hinbekommen.
Ach ja es ist weder wirtschaft noch Medieninformatik.
Es ist ganz normaler Maschinenbau;-)Also Danke nochmal
Markus
-
Tip: für Geldbeträge grundsätzlich *niemals* float oder double verwenden. IMMER Fixkomma. int64_t mit Faktor 10000 ist ne gute Wahl.
-
find long besser, das gibs wenigstens in jedem compiler ^^
-
hustbaer schrieb:
Tip: für Geldbeträge grundsätzlich *niemals* float oder double verwenden. IMMER Fixkomma. int64_t mit Faktor 10000 ist ne gute Wahl.
Fixkomma ist nicht das entscheidende, sondern dass der Faktor eine Zehnerpotenz ist. "Normales" Fixkomma mit so und soviel binären Nachkommastellen bringt genau gar keinen Vorteil gegenüber float, weil du dezimale Nachkommastellen genauso nicht exakt darstellen kannst.
-
@Bashar: ich hab' ja auch geschrieben Faktor 10000. Ich dachte mir es sei logisch und nicht der Rede wert dass es eine Zehnerpotenz sein muss.
Was die theoretische Möglichkeit von dezimalem Gleitkomma angeht: für Geldbeträge sinnlos, da man immer eine min. Anzahl an Nachkommastellen garantieren muss. Und ich wüsste auch keine Anwendung wo man mehr als diese minimale Anzahl für irgendwas brauchen könnte. Und wenn ich eine minimale Anzahl an Nachkommastellen garantieren muss, und auch nie mehr als diese minimale Anzahl an Nachkommastellen brauchen kann... dann brauche ich eben auch kein Gleitkomma. Logisch, oder
