<?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] Problem bei Operatorüberladung]]></title><description><![CDATA[<p>Hallo,</p>
<p>beim Schreiben eines Programmes bin ich auf ein Problem gestoßen.<br />
Ich habe eine Klasse, deren Instanzen ich addieren möchte.</p>
<p>Nun habe ich den Code für den Additions- und Zuweisungsoperator sowie für den Kopierkonstruktor geschrieben.</p>
<p>Die Addition alleine funktioniert, die Zuweisung auch.<br />
Wenn ich jetzt allerdings das Ergebnis der Addition einem 3. Objekt zuweisen möchte, stellt sich der Compiler quer.</p>
<p>Den Code habe ich <a href="http://codepad.org/5ITsVX7c" rel="nofollow">hierhin</a> gepastet.</p>
<p>Die Fehlermeldung lautet</p>
<pre><code>main.cpp: In function ‘int main()’:
main.cpp:7: error: no match for ‘operator=’ in ‘sum = Tour::operator+(Tour&amp;)(((Tour&amp;)(&amp; t2)))’
Tour.h:19: note: candidates are: Tour&amp; Tour::operator=(Tour&amp;)
</code></pre>
<p>Ich kann mit der Meldung nicht wirklich etwas anfangen.<br />
Nur der Aufruf der Addition sieht für mich sehr merkwürdig aus.</p>
<p>Kann mir jemand einen Tip geben, wo der Fehler liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277956/solved-problem-bei-operatorüberladung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 09:22:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277956.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Nov 2010 22:29:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Wed, 01 Dec 2010 14:58:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>beim Schreiben eines Programmes bin ich auf ein Problem gestoßen.<br />
Ich habe eine Klasse, deren Instanzen ich addieren möchte.</p>
<p>Nun habe ich den Code für den Additions- und Zuweisungsoperator sowie für den Kopierkonstruktor geschrieben.</p>
<p>Die Addition alleine funktioniert, die Zuweisung auch.<br />
Wenn ich jetzt allerdings das Ergebnis der Addition einem 3. Objekt zuweisen möchte, stellt sich der Compiler quer.</p>
<p>Den Code habe ich <a href="http://codepad.org/5ITsVX7c" rel="nofollow">hierhin</a> gepastet.</p>
<p>Die Fehlermeldung lautet</p>
<pre><code>main.cpp: In function ‘int main()’:
main.cpp:7: error: no match for ‘operator=’ in ‘sum = Tour::operator+(Tour&amp;)(((Tour&amp;)(&amp; t2)))’
Tour.h:19: note: candidates are: Tour&amp; Tour::operator=(Tour&amp;)
</code></pre>
<p>Ich kann mit der Meldung nicht wirklich etwas anfangen.<br />
Nur der Aufruf der Addition sieht für mich sehr merkwürdig aus.</p>
<p>Kann mir jemand einen Tip geben, wo der Fehler liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986498</guid><dc:creator><![CDATA[andy89]]></dc:creator><pubDate>Wed, 01 Dec 2010 14:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Fri, 26 Nov 2010 22:34:57 GMT]]></title><description><![CDATA[<p>Temporäre Objekte (wie der Rückgabewert des operator+) können nicht an nicht konstante Referenzen gebunden werden. Schreib den operator= so um, dass er einen Tour const &amp;-Parameter entgegennimmt.</p>
<p>Das wäre auch beim operator+ guter Stil, sonst kriegst du da spätestens bei a + b + c Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986499</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 26 Nov 2010 22:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Wed, 01 Dec 2010 15:00:04 GMT]]></title><description><![CDATA[<p>Ah, danke. Mit Referenz als Parameter funktioniert es. Man sollte halt nebenbei nicht mit Visual Studio / in Visual C++ programmieren, da scheint das kein Fehler zu sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988581</guid><dc:creator><![CDATA[andy89]]></dc:creator><pubDate>Wed, 01 Dec 2010 15:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Wed, 01 Dec 2010 16:59:44 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Temporäre Objekte (wie der Rückgabewert des operator+) können nicht an nicht konstante Referenzen gebunden werden.</p>
</blockquote>
<p>Alleine schon weil es letztere nicht gibt :p<br />
(Du meintest sicher Referenzen auf nicht-konstante Objekte, oder &quot;Non-Const-Referenzen&quot;. Soll kein Vorwurf sein ;))</p>
<p>andy89 schrieb:</p>
<blockquote>
<p>Man sollte halt nebenbei nicht mit Visual Studio / in Visual C++ programmieren, da scheint das kein Fehler zu sein...</p>
</blockquote>
<p>Oder man sollte vielleicht Compilerwarnungen lesen. Und falls nötig compilerspezifische Erweiterungen abschalten.</p>
<p>Übrigens solltest du <code>operator+</code> nicht als Memberfunktion definieren. Ein <code>operator+=</code> wäre zudem auch praktisch. Warum, siehst du <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988650</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Dec 2010 16:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Thu, 02 Dec 2010 18:32:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Übrigens solltest du <code>operator+</code> nicht als Memberfunktion definieren. Ein <code>operator+=</code> wäre zudem auch praktisch. Warum, siehst du <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">hier</a>.</p>
</blockquote>
<p>Wenn ich Operator+ aber in der Form</p>
<pre><code class="language-cpp">const X operator+(X const&amp; lhs, X const&amp; rhs);
</code></pre>
<p>überladen möchte, sagt mit g++</p>
<pre><code class="language-cpp">Fehler: »const Tour Tour::operator+(const Tour&amp;, const Tour&amp;)« muss entweder null oder ein Argument nehme
</code></pre>
<p>Oder was meinst du mit ich sollte operator+ nicht als Memberfunktion implementieren?<br />
Kann mich nur erinnern, dass ich irgendwo gelesen habe, die Operatorüberladung als Funktion zu schreiben und als friend in der Klasse anzugeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989238</guid><dc:creator><![CDATA[andy89]]></dc:creator><pubDate>Thu, 02 Dec 2010 18:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Problem bei Operatorüberladung on Thu, 02 Dec 2010 18:39:34 GMT]]></title><description><![CDATA[<p>Deklariere den Operator nicht innerhalb der Klasse, sondern als freie Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989243</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 02 Dec 2010 18:39:34 GMT</pubDate></item></channel></rss>