<?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[operatoren erben]]></title><description><![CDATA[<p>Hallo .... ich bin am verzweifeln! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Warum, WARUM geht das nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">class base
{
public:
	int DATA;

	base&amp; operator=(base o) { DATA = o.DATA; }
	base  operator+(base&amp; o) { base ret; ret.DATA + o.DATA; return ret; }
};

class deri : public base
{
public:
	deri() {}
};

int main()
{
	deri a;
	deri b; b.DATA = 1;
	deri c; c.DATA = 2;

	a = b + c;
}
</code></pre>
<p>GCC 4.1.2 schrieb:</p>
<blockquote>
<p>test.cpp: In function »int main()«:<br />
test.cpp:63: Fehler: no match für »operator=« in »a = b.deri::&lt;anonymous&gt;.base::operator+(((base&amp;)(&amp; c.deri::&lt;anonymous&gt;)))«<br />
test.cpp:52: Anmerkung: Kandidaten sind: deri&amp; deri::operator=(deri&amp;)</p>
</blockquote>
<p>Dankeschön <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/212626/operatoren-erben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 18:10:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212626.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 May 2008 15:04:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 15:26:46 GMT]]></title><description><![CDATA[<p>Hallo .... ich bin am verzweifeln! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Warum, WARUM geht das nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">class base
{
public:
	int DATA;

	base&amp; operator=(base o) { DATA = o.DATA; }
	base  operator+(base&amp; o) { base ret; ret.DATA + o.DATA; return ret; }
};

class deri : public base
{
public:
	deri() {}
};

int main()
{
	deri a;
	deri b; b.DATA = 1;
	deri c; c.DATA = 2;

	a = b + c;
}
</code></pre>
<p>GCC 4.1.2 schrieb:</p>
<blockquote>
<p>test.cpp: In function »int main()«:<br />
test.cpp:63: Fehler: no match für »operator=« in »a = b.deri::&lt;anonymous&gt;.base::operator+(((base&amp;)(&amp; c.deri::&lt;anonymous&gt;)))«<br />
test.cpp:52: Anmerkung: Kandidaten sind: deri&amp; deri::operator=(deri&amp;)</p>
</blockquote>
<p>Dankeschön <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1505514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505514</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Thu, 08 May 2008 15:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 15:42:53 GMT]]></title><description><![CDATA[<p>using base::operator=; in deri reinschreiben.</p>
<p>Danke! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Aber warum???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505533</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Thu, 08 May 2008 15:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 15:44:42 GMT]]></title><description><![CDATA[<p>Lol ... der Thread wird irgendwie überflüssig ^^</p>
<p>&quot;Weil Zuweisungsoperatoren genauso wenig wie Konstruktoren vererbt werden!&quot;</p>
<p>Aha, ok. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505535</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Thu, 08 May 2008 15:44:42 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 19:18:10 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> - Selbstgespräche sind manchmal auch schön. <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/1505652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505652</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 08 May 2008 19:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 21:07:23 GMT]]></title><description><![CDATA[<p>dass sie nicht vererbt werden, ist nicht ganz richtig.<br />
der compiler erzeugt aber für jede klasse automatisch einen zuweisungsoperator. stell dir einmal statt dem zuweisungsoperator eine andere funktion vor:</p>
<pre><code class="language-cpp">struct Base
{
   void foo () { }
};

struct Derived : Base
{
   void foo (int) {}
};
</code></pre>
<p>nun erzeug malein objekt vom typ Derived, und versuche, darüber Base::foo aufzurufen:</p>
<pre><code class="language-cpp">Derived d;
d.foo();
</code></pre>
<p>das wird nicht funktionieren. und warum nicht? weil die funktion foo(int) in Derived foo() aus Base verdeckt.<br />
zugriff auf Base::foo hast du noch entweder so:</p>
<pre><code class="language-cpp">d.Base::foo();
</code></pre>
<p>oder indem du in der klasse Derived selbst sagst, dass du die funktionen aus Base weiterverwenden willst:</p>
<pre><code class="language-cpp">struct Derived: Base
{
   using Base::foo;
   void foo (int) {}
};
</code></pre>
<p>so. nun passiert dasselbe aber mit deiner klasse deri, in der der vom compiler generierte zuweisungsoperator alle zuweisungsoperatoren der basisklasse verdeckt. anschaulich kannst du es dir so vorstellen:</p>
<pre><code class="language-cpp">deri a, b, c;
c.operator= (a + b);
//a + b liefert ein base, deri::operator=(base) ist aber von 
//deri::operator=(deri const&amp;) verdeckt. es gibt keine
//implizite konvertierung von base nach deri. lösung:

c.base::operator= (a + b);
//oder eben die variante mit using.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1505715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505715</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 08 May 2008 21:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Thu, 08 May 2008 21:08:35 GMT]]></title><description><![CDATA[<p>noch ein nachtrag: zuweisungsoperatoren können sehr wohl vererbt werden. auch virtuelle zuweisungsoperatoren sind möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505717</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 08 May 2008 21:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren erben on Fri, 09 May 2008 06:37:58 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>kein Widerspruch, sondern nur eine Ergänzung:</p>
<p>queer_boy schrieb:</p>
<blockquote>
<p>noch ein nachtrag: zuweisungsoperatoren können sehr wohl vererbt werden. auch virtuelle zuweisungsoperatoren sind möglich.</p>
</blockquote>
<p>Damit sind sie in der abgeleiteten Klasse sichtbar ... allerdings kann man dann trotzdem &quot;Match-Probleme&quot; bekommen (weil der Operator ja kein &quot;derived object&quot; als Parameter entgegennehmen kann).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505798</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 09 May 2008 06:37:58 GMT</pubDate></item></channel></rss>