Operatorueberladung und Matrix



  • Hallo *,

    Ich versuche gerade mir eine Matrixklasse als Template zu programmieren.

    Welchen Operator muss ich wie ueberladen, dass folgendes im Programm moeglich ist:

    matrix (i, j) = value;
    

    ?

    In die "andere" Richtung ist dies bereits moeglich:

    value = matrix (i, j)
    

    mit

    T operator() (unsigned int zeile, unsigned int spalte) {
        // bereichsueberpruefung
        return data[zeile * max_spalte + spalte];
    }
    


  • Du mußt die Daten by Reference zurückgeben. Im Prinzip mußt Du also nur Deinen Rückgabetyp von T auf T & ändern.
    Damit Du auch auf const Matrizen noch zugreifen kannst solltest Du auch noch die Methode als const überladen und den Rückgabewert dort als const T & oder eben const T definieren. Nur T würde ich auch dort nicht empfehlen, weil man sonst die Zuweisung machen kann ohne einen Compiler-Fehler zu bekommen, dennoch tut der Code dann nicht das, was man vielleicht erwarten würde.

    MfG Jester


Anmelden zum Antworten