<?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[Probleme mit Überladen von dem operator+]]></title><description><![CDATA[<p>Hallo an alle,<br />
programmiere für die Uni ein Programm in C++, das Vectoren addieren soll.<br />
Habe bereits den [] Operator überladen, damit man auf die Elemente von Vectoren zugreifen kann und sie verändern kann.<br />
Leider bekomme ich bei Überladen von dem operator+ folgende Fehler:</p>
<p>Fehler 1 error C2804: Binärer Operator '+' hat zu viele Parameter<br />
Fehler 2 error C2333: 'Vector&lt;T,dim&gt;::operator +': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen<br />
Fehler 3 error C2804: Binärer Operator '+' hat zu viele Parameter<br />
Fehler 4 error C2333: 'Vector&lt;T,dim&gt;::operator +': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen</p>
<p>Ich rufe den Operator so:</p>
<pre><code>Vector f, g, h;
h.(f,g);
</code></pre>
<p>Mein Code:</p>
<pre><code>void operator+ (Vector vecA, Vector vecB) {
		 T zahl1, zahl2, zahl3;
		 for(int i = 0; i &lt; dim; i++) {
		 zahl1 = vecA[i];
		 zahl2 = vecB[i];
		 zahl3 = zahl1 + zahl2;
		 vector[i] = zahl3;
		 }
	}
</code></pre>
<p>LG, Witness<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321661/probleme-mit-überladen-von-dem-operator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 06:04:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321661.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Nov 2013 13:38:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 13:38:05 GMT]]></title><description><![CDATA[<p>Hallo an alle,<br />
programmiere für die Uni ein Programm in C++, das Vectoren addieren soll.<br />
Habe bereits den [] Operator überladen, damit man auf die Elemente von Vectoren zugreifen kann und sie verändern kann.<br />
Leider bekomme ich bei Überladen von dem operator+ folgende Fehler:</p>
<p>Fehler 1 error C2804: Binärer Operator '+' hat zu viele Parameter<br />
Fehler 2 error C2333: 'Vector&lt;T,dim&gt;::operator +': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen<br />
Fehler 3 error C2804: Binärer Operator '+' hat zu viele Parameter<br />
Fehler 4 error C2333: 'Vector&lt;T,dim&gt;::operator +': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen</p>
<p>Ich rufe den Operator so:</p>
<pre><code>Vector f, g, h;
h.(f,g);
</code></pre>
<p>Mein Code:</p>
<pre><code>void operator+ (Vector vecA, Vector vecB) {
		 T zahl1, zahl2, zahl3;
		 for(int i = 0; i &lt; dim; i++) {
		 zahl1 = vecA[i];
		 zahl2 = vecB[i];
		 zahl3 = zahl1 + zahl2;
		 vector[i] = zahl3;
		 }
	}
</code></pre>
<p>LG, Witness<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366541</guid><dc:creator><![CDATA[Witness]]></dc:creator><pubDate>Wed, 20 Nov 2013 13:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 13:45:33 GMT]]></title><description><![CDATA[<p>Wenn der operator+ ein Member der Klasse ist, benötigt er nur einen Parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366545</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 20 Nov 2013 13:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 13:46:49 GMT]]></title><description><![CDATA[<p>Hallo Witness,</p>
<p>Willkommen im C++-Forum.</p>
<p>Ich vermute, Du hast bei der Deklaration des operator+ das Zauberwort friend vergessen und den Returntyp - also etwa so:</p>
<pre><code>template&lt; typename T, std::size_t dim &gt;
class Vector
{
public:
    // ... irgendwelche Methoden
    friend Vector operator+( const Vector&amp; vecA, const Vector&amp; vecB ) {
        Vector vector; // das (spätere) Ergebnis
        // ähnlich wie unten
        return vector;
    }
    // usw.
</code></pre>
<p>außerdem ist zu empfehlen diese Parameter als const Reference zu übergeben.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366546</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 20 Nov 2013 13:46:49 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 14:48:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27454">@daddy_felix</a>:</p>
<p>also, ich habe grade eben noch so probiert</p>
<pre><code>Vector operator+(const Vector &amp;vec)
  {
   Vector tmp(dim);
   for(size_t i=0;i&lt;dim;++i) tmp[i]=(*this)[i]+vec[i];
   return tmp; 
  }
</code></pre>
<p>mit dem Aufruf:</p>
<pre><code>h = g.operator+(f);
</code></pre>
<p>er hat folgende Fehler geworfen:<br />
Fehler 1 error C2664: 'Vector&lt;T,dim&gt;::Vector(const Vector&lt;T,dim&gt; &amp;)': Konvertierung des Parameters 1 von 'const int' in 'const Vector&lt;T,dim&gt; &amp;' nicht möglich<br />
Fehler 2 error C2678: Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const Vector&lt;T,dim&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)<br />
Fehler 3 error C2678: Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const Vector&lt;T,dim&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366562</guid><dc:creator><![CDATA[Witness]]></dc:creator><pubDate>Wed, 20 Nov 2013 14:48:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 14:55:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a> Salomon:</p>
<p>Habe auch so probiert:<br />
mit dem Aufruf:</p>
<pre><code>h = operator+(f, g);
</code></pre>
<pre><code>friend Vector operator+(const Vector&amp; vecA, const Vector&amp; vecB){
	Vector v[dim];
	for(int i = 0; i &lt; dim; i++) {
	v[i] = vecA[i] + vecB[i];
   }
	return v;
   }
</code></pre>
<p>So wirft er nur sieben Fehler:<br />
Fehler 1 error C2678: Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const Vector&lt;T,dim&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)</p>
<p>Fehler 2 error C2678: Binärer Operator '[': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const Vector&lt;T,dim&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)<br />
Fehler 3 error C2664: 'Vector&lt;T,dim&gt;::Vector(const Vector&lt;T,dim&gt; &amp;)': Konvertierung des Parameters 1 von 'Vector&lt;T,dim&gt; [3]' in 'const Vector&lt;T,dim&gt; &amp;' nicht möglich<br />
4 IntelliSense: Die Argumentliste für &quot;Klassenvorlage &quot;Vector&quot;&quot; fehlt.<br />
5 IntelliSense: Der Bezeichner &quot;&quot;dim&quot;&quot; ist nicht definiert.<br />
6 IntelliSense: Kein &quot;[]&quot;-Operator stimmt mit diesen Operanden überein.<br />
7 IntelliSense: Kein &quot;[]&quot;-Operator stimmt mit diesen Operanden überein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366567</guid><dc:creator><![CDATA[Witness]]></dc:creator><pubDate>Wed, 20 Nov 2013 14:55:28 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 14:56:39 GMT]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

template&lt;class T, int dim&gt;
class Vector {
public:
	typedef size_t size_type;
	T vector[dim];

	Vector() {
		for(int i = 0; i &lt; dim;i++) {
		vector[i] = 0;
		}
		}
	T&amp; operator[] (int i) {
			return vector[i];
	}

	/*Vector operator+(const Vector &amp;vec)
  {
   Vector tmp(dim);
   for(size_t i=0;i&lt;dim;++i) tmp[i]=(*this)[i]+vec[i];
   return tmp; 
  }*/
	friend Vector operator+(const Vector&amp; vecA, const Vector&amp; vecB){
	Vector v[dim];
	for(int i = 0; i &lt; dim; i++) {
	v[i] = vecA[i] + vecB[i];
   }
	return v;
   }

	int length() {
		return dim;
	 }

	void print() {
		cout &lt;&lt; length(vector)&lt;&lt; endl;
	}

};

void main() {
	typedef Vector&lt;float, 3&gt; Vector;

	Vector f, g, h;

	for(int i = 0; i &lt; 3;i++) {
		cout &lt;&lt; f[i] &lt;&lt; &quot; &quot;;
		}
	cout &lt;&lt; endl;
		f[0] = 1.0f;
		f[1] = 2.0f;
		f[2] = 3.0f;
	for(int i = 0; i &lt; 3; i++) {
		cout &lt;&lt; f[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;
	g[0] = 3.0f;
	g[1] = 2.0f;
	g[2] = 1.0f;
	for(int i = 0; i &lt; 3; i++) {
		cout &lt;&lt; g[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;
	// Addition 
	//h.operator+(f, g);
	h = operator+(f, g);
	/*for(int i = 0; i &lt; 3; i++) {
		cout &lt;&lt; h[i] &lt;&lt; &quot; &quot;;
	}*/
	cout &lt;&lt; endl;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2366568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366568</guid><dc:creator><![CDATA[Witness]]></dc:creator><pubDate>Wed, 20 Nov 2013 14:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Überladen von dem operator+ on Wed, 20 Nov 2013 15:03:16 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">friend Vector operator+(const Vector&amp; vecA, const Vector&amp; vecB)
{
    Vector v; // &lt;- keine Klammerung - keine Dimension angeben
    for(int i = 0; i &lt; dim; i++)
    {
        v[i] = vecA[i] + vecB[i];
    }

    return v;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2366570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366570</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 20 Nov 2013 15:03:16 GMT</pubDate></item></channel></rss>