Indexoperator-Ergebnistyp?
-
Hallo,
mir wurde folgende Aufgabenstellung gegeben, was für eine Elementfunktion ich zu erstellen habe:
Einen Indexoperator [] mit einem Argument vom Typ int. Bei Aufruf des Operators []
mit dem aktuellen Argument i soll als Ergebnis eine Referenz auf die i-te Komponente des Feldes zurückgegeben werden. Falls i nicht im gültigen Indexbereich liegt, soll durch den Funktionsaufruf exit(1) das Programm abgebrochen werden. Dies dient später zum Einlesen des Vektors.Bis auf "Ergebnistyp operator [](int i);" bin ich jetzt gekommen.
Doch was ist der Ergebnistyp? Es muss ja irgendein Pointer sein, bloß weiß ich leider nicht, wie ich den realisieren soll.Das Feld jedenfalls ist so definiert: double* daten = new double[n];
exit schreibe ich am besten separat als globe Funktion, die beim Wert 1 das Programm eben beendet?
-
double& operator[](int i) { if(i>=anzahl) exit(1); return daten[i]; }aber nimm die an diesem code kein beispiel für die zukunft, denn exit zu verwenden ist sehr sehr böse.
exit ist schon eingebaut.
-
Imo würde es mehr Sinn machen eine exception zu werfen und die dann fangen und dann kannst du machen, was du willst. (Auch die Andwendung sauber herunterfahren).
-
Oder man legt sein vollstes Vertrauen in die Testabteilung und nimmt assert.

-
Kommt halt auch drauf an, was man von
operator[]erwartet. Z.B. Ob im Release-Modus manuelle Prüfungen durchgeführt weden.Schlussendlich spielt es nicht so eine grosse Rolle, der Anwender sollte einfach wissen, ob er Out-Of-Ranges per Exception abfangen kann oder vorher schauen sollte, dass diese nicht vorkommen.