Problem bei Fehlerprüfung
-
Mein Lehrer möchte, dass wir überall auf Fehler prüfen, um mir das ganze einfacher zu machen, dachte ich mir ich schreib ne Funktion die das für die Ausgaben tut, aber da habe ich ein Problem:
#include<iostream> #include<string> using namespace std; bool prüfungAusgabe(ostream& cout,string& text){ if(!(cout<<text)) { prüfungAusgabe(cout,"Es ist ein Fehler aufgetreten"); return false; } return true; } bool prüfungZahlEingabe(istream& cin,int& zahl){ if(!(cin>>zahl)) { prüfungAusgabe(cout,"Falsche Eingabe, neu eingeben:"); return prüfungZahlEingabe(cin,zahl); } return true; } int main(){ int zahl; prüfungAusgabe(cout,"Bitte eine Zahl eingeben: "); prüfungZahlEingabe(cin,zahl); }Das geht so nur wenn ich da keine Zahl eingeben tu, dann stürzt es ab

-
Wenn der Fehlerstatus von cin einmal gesetzt ist, mußt du ihn explizit wieder zurücksetzen (per clear()), sonst ignoriert es alle weiteren Eingabe-Anforderungen - und du erhältst eine nette Endlos-Rekursion, die dir früher oder später den Stack zerlegt.
PS: Statt der Rekursion solltest du lieber eine Schleife verwenden.
PPS: Die Rückgabe der prüfung...-Funktionen solltest du auch abfrage, sonst nützen sie überhaupt nichts (btw, wie hast du den Funktionsnamen "prüfungAusgabe" durch den Compiler gebracht?).