[ERLEDIGT] exit im Klassenkonstruktor
-
Hallo Leute,
kann es sein dass man im Klassenkonstruktor kein exit() benutzen darf?Nachtrag:
Ich bekomme zb beiexit(1)den Fehler:
error C3861: 'exit': identifier not found
-
Du solltest generell keine exit() benutzen.
-
Janjan schrieb:
Du solltest generell keine exit() benutzen.
Funktioniert es dennoch?
Wie macht man es besser? Exceptions?
-
Hier ist der Code:
Header:#ifndef EDGE_H #define EDGE_H class Edge{ private: unsigned int startknot_id,endknot_id,rightface_id,leftface_id; bool has_startknot_id,has_endknot_id; public: Edge(unsigned int new_knot); ...CPP:
#include "edge.h" Edge::Edge(unsigned int new_knot_id){ if(has_startknot_id && has_endknot_id){ exit(12); } else if(has_startknot_id ){ {set_endknot_id(new_knot_id); } else{ set_startknot_id(new_knot_id); } }In keiner Methode der Klasse kann ich exit benutzen.
Bei anderen Klassen klappt es einwandfrei. Habs eben probiert.
Neustart hilft auch nichts.
Vielleicht übersehe ich ja etwas.
-
Da fehlt die cstdlib. Allerdings macht man das wirlich besser mit Exceptions.
-
drakon schrieb:
Da fehlt die cstdlib. Allerdings macht man das wirlich besser mit Exceptions.
Wieso geht es in allen anderen Klassen? Da nutze ich ebenfalls keine <cstdlib>
-
darkfate schrieb:
drakon schrieb:
Da fehlt die cstdlib. Allerdings macht man das wirlich besser mit Exceptions.
Wieso geht es in allen anderen Klassen? Da nutze ich ebenfalls keine <cstdlib>
Vielleicht hast du dort einen anderen Header, der diese indirekt inkludiert.
Aber dennoch: exit sollte man nicht einsetzen (Oder man liebt allgemein Schleudersitze, und das Risiko).
-
Na gut, dann stelle ich mich auf Exceptions um...

-
darkfate schrieb:
class Edge{ private: unsigned int startknot_id,endknot_id,rightface_id,leftface_id; bool has_startknot_id,has_endknot_id; public: Edge(unsigned int new_knot); ...#include "edge.h" Edge::Edge(unsigned int new_knot_id){ if(has_startknot_id && has_endknot_id){ exit(12); } else if(has_startknot_id ){ {set_endknot_id(new_knot_id); } else{ set_startknot_id(new_knot_id); } }Das ergibt keinen Sinn. Du willst im Konstruktor auf die Werte von unitialisierten Membervariablen prüfen? Wozu?
-
Janjan schrieb:
darkfate schrieb:
class Edge{ private: unsigned int startknot_id,endknot_id,rightface_id,leftface_id; bool has_startknot_id,has_endknot_id; public: Edge(unsigned int new_knot); ...#include "edge.h" Edge::Edge(unsigned int new_knot_id){ if(has_startknot_id && has_endknot_id){ exit(12); } else if(has_startknot_id ){ {set_endknot_id(new_knot_id); } else{ set_startknot_id(new_knot_id); } }Das ergibt keinen Sinn. Du willst im Konstruktor auf die Werte von unitialisierten Membervariablen prüfen? Wozu?
Gute Frage
... ein Copy & Paste Fehler. Mittlerweile ist das ganze Konstrukt weg. Danke für den Hinweis, ich schau mir mal die anderen Klassen an.