Klassenfunktion beenden
-
Guten,
ich habe innerhalb einer Klasse eine Funktion1, Funktion2 und Funktion3. Jede Funktion ruft ihre Unterfunktion auf (Beispiel folgt). Wenn Funktion3 (aufgerufen in Funktion2) 0 zurück gibt möchte ich dass Funktion1 sofort zurückkehrt.
Mein erster Ansatz war irgendwie manuell den Konstruktor aufzurufen, aber ich glaube das ist keine so grandiose Idee
Mein zweiter Ansatz wäre jetzt in Funktion1 einen try()catch() Block zu basteln in etwa so:class Test { public: void func1() { try { func2(); } catch (int val) { } } private: void func2() { if (!func3()) throw 0; } int func3() { return 0; } };Kann man das so machen? Oder gibts für solche Fälle in C++ schon eine Art "extra Routine"? Denn im Prinzip missbraucht man hier ja eine Exception um sich "durch den Stack nach oben zu werfen"

Edit: Anmerkung:
Es handelt sich bei realen Problemen natürlich um mehr als drei Funktionen.
-
spricht was dagegen, allen funcs bool als Returnwert zu geben? Exeptions zu schmeissen zur Ablaufsteuerung (es sei denn es handelt sich dabei um "Fehler"zustände) finde ich fragwürdig. Dann wäre ein einfaches
if(!func2()) return;ausreichend.
-
Ja, wie erwähnt sprechen sehr viele Funktionen die sich gegenseitig aufrufen dagegen

Natürlich ist das Ganze auch mit Rückgabewerten möglich, aber genau das soll ja vermieden werden!
-
cooky451 schrieb:
Ja, wie erwähnt sprechen sehr viele Funktionen die sich gegenseitig aufrufen dagegen

Natürlich ist das Ganze auch mit Rückgabewerten möglich, aber genau das soll ja vermieden werden!Warum genau soll das vermieden werden?
-
Für mich hört sich das nach der grundlegenden Entwickleraufgabe an. Das darf man niemals mit Exceptions machen, sondern muß klare Ausgänge und Abläufe definieren und umsetzen.