<?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[Standard-Compiler-Fehlermeldung: &amp;quot;Die Übergabe von bla als &amp;gt;&amp;gt;this&amp;lt;&amp;lt;-Argument von bla streicht Qualifizi]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>bestimmt ist mein Problem relativ einfach zu beheben, aber ich bin nach längerer Programmier-Abstinenz nicht mehr so fit in C++ und nach langer Fehlersuche jetzt schon ziemlich frustriert und brauche einfach mal einen Tipp, was ich falsch mache.<br />
Ich wollte eine kleine Klasse für Vierervektoren schreiben und dazu überlade ich auch den Indexoperator [] und den Additionsoperator +. Die einzigen privaten Daten der Klasse FourVector sind ein vector&lt;double&gt;</p>
<pre><code>class FourVector{

	private:

	vector&lt;double&gt;  vec;

	public:

[...]
[\code]

Im überladenen Additionsoperator steckt nun aber ein Fehler. Auf der Suche nach dem Fehler, hab ich die einzelnen Anweisungen in dieser Funktion dann aufgedröselt
[code]
FourVector FourVector::operator+(const FourVector &amp; v1){

	double b1 = v1[0];                    Line 59 
	double b2 = v1[1];
	double b3 = v1[2];
	double b4 = v1[3];                    Line 62

	double a1 = vec[0] + b1;
	double a2 = vec[1] + b2;
	double a3 = vec[2] + b3;
	double a4 = vec[3] + b4;

	return FourVector(a1, a2, a3, a4);

}
</code></pre>
<p>Normalerweise würde ich direkt schreiben</p>
<pre><code>return FourVector(vec[0] + v1[0], vec[1] + v1[1], vec[2] + v1[2], vec[3]+ v1[3]);
</code></pre>
<p>Der Compiler gibt mir zu Line 59 bis 62 immer folgende Fehlermeldung aus</p>
<blockquote>
<p>FourVector.cpp: In member function »FourVector FourVector::operator+(const FourVector&amp;)«:<br />
FourVector.cpp:59: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:60: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:61: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:62: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer</p>
</blockquote>
<p>Der Indexoperator ist</p>
<pre><code>double&amp; FourVector::operator[](int const &amp; index){
		if(index&gt;=0 &amp;&amp; index&lt;=4){
			return (vec[index]);

		}
		else{
			cerr &lt;&lt; &quot;Index out of range!&quot; &lt;&lt; endl;
			return vec[0];
		}

	}
</code></pre>
<p>Kann mir jemand sagen, was ich falsch mache? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Ich hab gerade eben die Vermutung gehegt, dass ich irgendwie den Indexoperator [] als const deklarieren muss, weil das erste Argument ja ein const FourVector wäre, also</p>
<pre><code>double&amp; FourVector::operator[] const(int const &amp; index){
</code></pre>
<p>Danach bekomm ich nur noch eine einzige Fehlermeldung</p>
<blockquote>
<p>FourVector.cpp:45: Fehler: expected initializer before »const«</p>
</blockquote>
<p>die ich aber in diesem Kontext auch nicht verstehe... Help?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226352/standard-compiler-fehlermeldung-quot-die-übergabe-von-bla-als-gt-gt-this-lt-lt-argument-von-bla-streicht-qualifizi</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 01:17:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226352.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Oct 2008 12:09:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standard-Compiler-Fehlermeldung: &amp;quot;Die Übergabe von bla als &amp;gt;&amp;gt;this&amp;lt;&amp;lt;-Argument von bla streicht Qualifizi on Fri, 31 Oct 2008 12:09:12 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>bestimmt ist mein Problem relativ einfach zu beheben, aber ich bin nach längerer Programmier-Abstinenz nicht mehr so fit in C++ und nach langer Fehlersuche jetzt schon ziemlich frustriert und brauche einfach mal einen Tipp, was ich falsch mache.<br />
Ich wollte eine kleine Klasse für Vierervektoren schreiben und dazu überlade ich auch den Indexoperator [] und den Additionsoperator +. Die einzigen privaten Daten der Klasse FourVector sind ein vector&lt;double&gt;</p>
<pre><code>class FourVector{

	private:

	vector&lt;double&gt;  vec;

	public:

[...]
[\code]

Im überladenen Additionsoperator steckt nun aber ein Fehler. Auf der Suche nach dem Fehler, hab ich die einzelnen Anweisungen in dieser Funktion dann aufgedröselt
[code]
FourVector FourVector::operator+(const FourVector &amp; v1){

	double b1 = v1[0];                    Line 59 
	double b2 = v1[1];
	double b3 = v1[2];
	double b4 = v1[3];                    Line 62

	double a1 = vec[0] + b1;
	double a2 = vec[1] + b2;
	double a3 = vec[2] + b3;
	double a4 = vec[3] + b4;

	return FourVector(a1, a2, a3, a4);

}
</code></pre>
<p>Normalerweise würde ich direkt schreiben</p>
<pre><code>return FourVector(vec[0] + v1[0], vec[1] + v1[1], vec[2] + v1[2], vec[3]+ v1[3]);
</code></pre>
<p>Der Compiler gibt mir zu Line 59 bis 62 immer folgende Fehlermeldung aus</p>
<blockquote>
<p>FourVector.cpp: In member function »FourVector FourVector::operator+(const FourVector&amp;)«:<br />
FourVector.cpp:59: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:60: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:61: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer<br />
FourVector.cpp:62: Fehler: Die Übergabe von »const FourVector« als »this«-Argument von »double&amp; FourVector::operator[](const int&amp;)« streicht Qualifizierer</p>
</blockquote>
<p>Der Indexoperator ist</p>
<pre><code>double&amp; FourVector::operator[](int const &amp; index){
		if(index&gt;=0 &amp;&amp; index&lt;=4){
			return (vec[index]);

		}
		else{
			cerr &lt;&lt; &quot;Index out of range!&quot; &lt;&lt; endl;
			return vec[0];
		}

	}
</code></pre>
<p>Kann mir jemand sagen, was ich falsch mache? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Ich hab gerade eben die Vermutung gehegt, dass ich irgendwie den Indexoperator [] als const deklarieren muss, weil das erste Argument ja ein const FourVector wäre, also</p>
<pre><code>double&amp; FourVector::operator[] const(int const &amp; index){
</code></pre>
<p>Danach bekomm ich nur noch eine einzige Fehlermeldung</p>
<blockquote>
<p>FourVector.cpp:45: Fehler: expected initializer before »const«</p>
</blockquote>
<p>die ich aber in diesem Kontext auch nicht verstehe... Help?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1608010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1608010</guid><dc:creator><![CDATA[nick_twisp]]></dc:creator><pubDate>Fri, 31 Oct 2008 12:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Compiler-Fehlermeldung: &amp;quot;Die Übergabe von bla als &amp;gt;&amp;gt;this&amp;lt;&amp;lt;-Argument von bla streicht Qualifizi on Fri, 31 Oct 2008 12:16:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">double&amp; FourVector::operator[] (int const &amp; index)const{
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1608014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1608014</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 31 Oct 2008 12:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to Standard-Compiler-Fehlermeldung: &amp;quot;Die Übergabe von bla als &amp;gt;&amp;gt;this&amp;lt;&amp;lt;-Argument von bla streicht Qualifizi on Fri, 31 Oct 2008 13:21:44 GMT]]></title><description><![CDATA[<p>Ich würde in einer Klasse für mathematische Vektoren auch nicht unbedingt den STL-Container <code>std::vector</code> als interne Speichermöglichkeit benutzen, da dieser relativ massiv ist und du seine Funktionalität zur dynamischen Verwaltung gar nicht benötigst.</p>
<p>Hier wäre ein einfaches Array angebracht, da du damit auf dem Stack arbeiten kannst und die Dimension ja sowieso konstant bleibt. Du verschwendest so weniger Speicher, und eventuell gewinnst du sogar noch ein bisschen Performance. Und für die strikten Arrayhasser gibts ja noch <code>boost::array</code> bzw. <code>std::tr1::array</code> .</p>
<p>Ausserdem definiert man die &quot;unabhängigen&quot; Operatoren wie <code>+</code> , <code>-</code> , <code>&lt;</code> , <code>==</code> etc. normalerweise als globale Funktionen und <code>+=</code> , <code>-=</code> , etc. innerhalb der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1608063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1608063</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 31 Oct 2008 13:21:44 GMT</pubDate></item></channel></rss>