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.


Anmelden zum Antworten