[SOLVED] Zugriff auf Matrix Element über Operator



  • Hallo

    ich implementiere gerade eine Matrix Klasse und möchte über den ()-Operator auf die Elemente zugreifen und diesen einen Wert zuweisen. Das klappt soweit schon mal. Die Werte sind in einem Feld gespeichert, deswegen würde ich gern noch überprüfen ob die Indizes zulässig sind damit keine falschen Werte geändert werden. Wie mache ich das am günstigsten? (ganz unten)

    Über diese Methode werden lediglich einzelne Elemente zurück gegeben. Gibt es auch eine Möglichkeit sich Spalten und Zeilen, wie zum Beispiel im Matlab mittels A(:,1) bzw A(2,:) zurück zu geben?

    Danke im voraus Liebe Grüße

    Nerva

    Header

    class RMatrix {
    private:
    	double *a;
    	int anzSpalten;
    	int anzZeilen;
    public:
    	RMatrix();
    	RMatrix(int, int);
    	~RMatrix();
    
    RMatrix getZeile(int i);
    RMatrix getSpalte(int j);
    
    	double operator()(int i, int j) const;
    	double& operator()(int i, int j);
    };
    

    Implementierung:

    double RMatrix::operator() (int i, int j) const {
    	if (i < anzZeilen && j < anzSpalten){
    		return a[i*anzSpalten+ j];
    	}
    	else { return 0.0; }	
    }
    
    double& RMatrix::operator() (int i, int j) {
    //  Überprüfung fehlt
    	return a[i*anzSpalten+ j];
    }
    


  • Warum tust du die fertige Überprüfung nicht auch in die andere Funktion? Vielleicht wäre ein assert oder throw sinnvoller als 0 zurück zu geben.
    Klar kannst du Zeilen und Spalten zurück geben. Schreibe dir halt eine Zeilen- und Spaltenklasse, die einen Zeiger auf die Matrix hält und den ()-Operator so überlädt, dass das Richtige raus kommt.


Anmelden zum Antworten