operator() ueberladen
-
Ich schreibe eine Klasse fuer einen dreidimensionalen Array und will den Operator () ueberschreiben, so dass man damit auf einzelne Elemente zugreiffen kann. Wie beim []-Operator eben.
Aus einigen Beispielen hab' ich nun folgendes zusammen:template<typename datatype> datatype &Array3D<datatype>::operator() (unsigned int x, unsigned int y, unsigned int z) throw (array_excptn){ static datatype r; return r; }Aber die Funktion gibt einen Wert zurueck.
Ich will, dass ein Wert aufgenommen wird.
Wie kriege ich jetzt nun das x ausarray(x, y, z) = x;, so dass ich es in den Array schreiben kann?
-
die funktion gibt eine referenz zurück. vielleicht eine referenz auf ein falsches objekt, aber prinzipiell ist es möglich:
int &foo () { static int i; return i; } //... foo() = 2; cout << foo() << endl;
-
Mal ganz abgesehen von der Referenz, man kann übrigens auch Operator [] für mehrdimensionale dynamische Arrays verwenden. Die Rückgabe wird dann über eine Proxyklasse geregelt.