Programm stürzt ab
-
Hi Leute,
schaut euch mal den folgenden Code in der CPP Datei an.
Irgendwas stimmt da nicht, wenn ich das Geld vom Sparkonto abholen will.
Und zwar stürzt er dann ab. Kann mir nur nicht erklären warum ...Sieht doch alles korrekt aus. Das abheben von Geld auf dem Girokonto funktioniert ...
Download: http://www.fileuploadx.de/938050
-
Sebastian08 schrieb:
schaut euch mal den folgenden Code in der CPP Datei an.
Wie wäre es wenn du den Abschnitt in dem der Absturz passiert postest (Mittels Debugger sollte sich das ja wohl relativ schnell finden lassen). Die wenigsten werden sich deinen gesamten Code anschauen.
-
Ja, wäre eine Maßnahme:
float auszahlen(float a) { if((kontostand-a) < 0) cout << "Fehler, gehen Sie arbeiten"; else return auszahlen(a); }Da stürzt er ab.
-
return auszahlen(a);
-
-> Endlos-Rekursion
-
Ja, jetzt wo ihr es sagt.
Wie könnte ich das denn umgehen?
-
Hab schon.
Methode umbenannt.
-
Sebastian08 schrieb:
Methode umbenannt.
Und damit entgehst du der Rekursion?
-
Nexus schrieb:
Sebastian08 schrieb:
Methode umbenannt.
Und damit entgehst du der Rekursion?
ja, aber ich weiß nicht, das ist ja dann nicht mehr der sinn einer vererbung?
die methoden sollte ja gleich heißen. nur spirngt er immer in die falsche methode und so kommt es dann zur endlos-rekursion.
-
Was soll das denn werden...Integers als public? wtf?
Das Zeug wird außerhalb der Klasse als Methode definiert und nicht in der Klasse!
-
Mit Base::auszahlen(a); rufst du die auszahlen-Methode der Base-Klasse auf.
-
way schrieb:
wtf?
Das Zeug wird außerhalb der Klasse als Methode definiert und nicht in der Klasse!Ach ja? Seit wann wird einem das denn vorgeschrieben?
Ich finde es selber zwar auch eleganter, Memberfunktionen ausserhalb der Klasse zu definieren, aber zu sagen, es werde so nicht gemacht, ist einfach nur falsch.
-
Habe ich probiert, aber wenn ich ja:
virtual float auszahlen(float betrag) { kontostand = kontostand - betrag; return kontostand; }in dem Code stehen habe, bräuchte ich ja kein virtual mehr.
Aber ich möchte es mit virtual machen.