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 aus

    array(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.


Anmelden zum Antworten