<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[SOLVED] Zugriff auf Matrix Element über Operator]]></title><description><![CDATA[<p>Hallo</p>
<p>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)</p>
<p>Ü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?</p>
<p>Danke im voraus Liebe Grüße</p>
<p>Nerva</p>
<p>Header</p>
<pre><code>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&amp; operator()(int i, int j);
};
</code></pre>
<p>Implementierung:</p>
<pre><code>double RMatrix::operator() (int i, int j) const {
	if (i &lt; anzZeilen &amp;&amp; j &lt; anzSpalten){
		return a[i*anzSpalten+ j];
	}
	else { return 0.0; }	
}

double&amp; RMatrix::operator() (int i, int j) {
//  Überprüfung fehlt
	return a[i*anzSpalten+ j];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/326999/solved-zugriff-auf-matrix-element-über-operator</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:26:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326999.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Jul 2014 17:31:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [SOLVED] Zugriff auf Matrix Element über Operator on Mon, 04 Aug 2014 15:09:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>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)</p>
<p>Ü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?</p>
<p>Danke im voraus Liebe Grüße</p>
<p>Nerva</p>
<p>Header</p>
<pre><code>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&amp; operator()(int i, int j);
};
</code></pre>
<p>Implementierung:</p>
<pre><code>double RMatrix::operator() (int i, int j) const {
	if (i &lt; anzZeilen &amp;&amp; j &lt; anzSpalten){
		return a[i*anzSpalten+ j];
	}
	else { return 0.0; }	
}

double&amp; RMatrix::operator() (int i, int j) {
//  Überprüfung fehlt
	return a[i*anzSpalten+ j];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2409277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409277</guid><dc:creator><![CDATA[Nerva]]></dc:creator><pubDate>Mon, 04 Aug 2014 15:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to [SOLVED] Zugriff auf Matrix Element über Operator on Fri, 18 Jul 2014 17:55:18 GMT]]></title><description><![CDATA[<p>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.<br />
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.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409281</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Fri, 18 Jul 2014 17:55:18 GMT</pubDate></item></channel></rss>