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