Subscript Operator [] überladen



  • Hallo,

    ich habe gerade einen Artikel gelesen: http://www.edm2.com/0604/introcpp9.html

    Dort wird ein großer Aufwand betrieben, um den []-Operator zu überladen.
    (etwas weiter im Text, etwa ab "class FileArray"...)

    An sich geht das auch einfacher: http://www.devx.com/tips/Tip/13038
    (const-Version zum Lesen, die "normale" zum Schreiben)

    Ich verstehe nicht, was bei der zweiten Methode schiefgehen soll?
    Wozu könnte der Aufwand gut sein?
    (Die Verständlichkeit ist es offenbar nicht. :D)

    Danke, für sachdienliche Hinweise!


  • Mod

    der grund ist simpel und fundamental. im ersten artikel soll eine art proxy-container erstellt werden. die daten existieren dabei nicht (jedenfalls nicht permanent) im speicher, sondern irgendwo extern - in diesem falle in einem file. wenn wir nur lesenden zugriff benötigten, wäre das noch kein allzu großes problem, wir könnten schlicht den wert lesen und direkt (als objekt und nicht als referenz) zurückgeben. wollen wir auch in den container schreiben, haben wir ein problem: die daten exteieren ja nicht im haupspeicher; wie also soll man eine referenz an etwas binden, das kein objekt im sinne der sprachdefinition ist? 😉 offenbar brauchen wir etwas, dass sich weitgehend (jedenfalls soweit, wie wir es benötigen) wie eine referenz verhält, d.h. zugriffe darauf verhalten sich, als ob sie auf dem original erfolgen. solche objekte nennt man proxies. beide artikel haben also recht, im jeweiligen kontext betrachtet.



  • Das leuchtet mir ein.

    Komplexe Probleme erfordern halt auch komplexere Lösungen.
    Schön, daß mein Problem (Vektor-Klasse) eher zu den einfacheren gehört.
    (Was natürlich komplexe Lösungen nicht ausschließt... 🤡)

    Vielen Dank!


Anmelden zum Antworten