<?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[operator= bei Mehrfachvererbung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgende Klassen:</p>
<pre><code>class A
{
protected:
  std::string a;
  std::string b;
...
   virtual A &amp;operator=(const A &amp;a);
...
};

class B : public virtual A
{
protected:
int c;
...
  virtual B &amp;operator=(const A &amp;a);
  virtual B &amp;operator=(const B &amp;b);
...
};

class C : public virtual A
{
protected:
int d;
...
  virtual C &amp;operator=(const A &amp;a);
  virtual C &amp;operator=(const C &amp;c);
...
};

class D : public B, public C
{
int e;
...
  virtual D &amp;operator=(const A &amp;a);
  virtual D &amp;operator=(const B &amp;b);
  virtual D &amp;operator=(const C &amp;c);
  virtual D &amp;operator=(const D &amp;d);
...
};
</code></pre>
<p>Nun besteht logischerweise ein Konflikt bei operator=(const A &amp;a) in Klasse D, da sowohl Klasse B als auch Klasse C diesen Operator verwenden.</p>
<p>Gibt es hierzu eine Lösung oder ist dies allgemein nicht möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329849/operator-bei-mehrfachvererbung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 20:55:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329849.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Dec 2014 14:36:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 14:36:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgende Klassen:</p>
<pre><code>class A
{
protected:
  std::string a;
  std::string b;
...
   virtual A &amp;operator=(const A &amp;a);
...
};

class B : public virtual A
{
protected:
int c;
...
  virtual B &amp;operator=(const A &amp;a);
  virtual B &amp;operator=(const B &amp;b);
...
};

class C : public virtual A
{
protected:
int d;
...
  virtual C &amp;operator=(const A &amp;a);
  virtual C &amp;operator=(const C &amp;c);
...
};

class D : public B, public C
{
int e;
...
  virtual D &amp;operator=(const A &amp;a);
  virtual D &amp;operator=(const B &amp;b);
  virtual D &amp;operator=(const C &amp;c);
  virtual D &amp;operator=(const D &amp;d);
...
};
</code></pre>
<p>Nun besteht logischerweise ein Konflikt bei operator=(const A &amp;a) in Klasse D, da sowohl Klasse B als auch Klasse C diesen Operator verwenden.</p>
<p>Gibt es hierzu eine Lösung oder ist dies allgemein nicht möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432163</guid><dc:creator><![CDATA[Starcluster]]></dc:creator><pubDate>Wed, 10 Dec 2014 14:36:16 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 14:42:27 GMT]]></title><description><![CDATA[<p>Eine gängige Lösung ist alle Basisklassen abstrakt zu machen und die Möglichkeiten zur Kopie protected. Zuweisungen sind dann nur in den abgeleiteten Klassen möglich, du sparst dir virtuelle Assignmentoperatoren und verhinderst mixed-type-assignments.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432165</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 10 Dec 2014 14:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 14:48:43 GMT]]></title><description><![CDATA[<p>Keine der Klassen soll in diesem Beispiel abstrakt sein.</p>
<p>...also lässt sich der =-Operator hier nicht umsetzen und stattdessen eine clone-Funktion nutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432166</guid><dc:creator><![CDATA[Starcluster]]></dc:creator><pubDate>Wed, 10 Dec 2014 14:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 15:12:55 GMT]]></title><description><![CDATA[<p>Starcluster schrieb:</p>
<blockquote>
<p>Keine der Klassen soll in diesem Beispiel abstrakt sein.</p>
<p>...also lässt sich der =-Operator hier nicht umsetzen und stattdessen eine clone-Funktion nutzen?</p>
</blockquote>
<p>Dann ändere dein Design. Nicht nur ist MI häufig falsch, auch sollten alle Basisklassen abstrakt sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432171</guid><dc:creator><![CDATA[Effictive C++]]></dc:creator><pubDate>Wed, 10 Dec 2014 15:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 15:14:18 GMT]]></title><description><![CDATA[<p>Ist halt die Vorgabe einer Aufgabe. <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/2432172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432172</guid><dc:creator><![CDATA[Starcluster]]></dc:creator><pubDate>Wed, 10 Dec 2014 15:14:18 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 16:19:24 GMT]]></title><description><![CDATA[<p>Starcluster schrieb:</p>
<blockquote>
<p>Nun besteht logischerweise ein Konflikt bei operator=(const A &amp;a) in Klasse D, da sowohl Klasse B als auch Klasse C diesen Operator verwenden.</p>
<p>Gibt es hierzu eine Lösung oder ist dies allgemein nicht möglich?</p>
</blockquote>
<p>Was für ein Konflikt?<br />
Was funktioniert denn nicht so wie geplant?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432178</guid><dc:creator><![CDATA[__someone]]></dc:creator><pubDate>Wed, 10 Dec 2014 16:19:24 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 16:29:19 GMT]]></title><description><![CDATA[<p>Habe es nun unter Code::Blocks kompiliert. Dort funktioniert es komischerweise...<br />
Evtl. ein Bug in VS12?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432180</guid><dc:creator><![CDATA[Starcluster]]></dc:creator><pubDate>Wed, 10 Dec 2014 16:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 16:30:26 GMT]]></title><description><![CDATA[<p>Sorry, ich meinte VS2013...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432181</guid><dc:creator><![CDATA[Starcluster]]></dc:creator><pubDate>Wed, 10 Dec 2014 16:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to operator= bei Mehrfachvererbung on Wed, 10 Dec 2014 16:34:15 GMT]]></title><description><![CDATA[<p>Poste mal ein vollständiges, minimales Beispiel, was wir einfach Copy &amp; Pasten können und unter VS2013 einen Fehler erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432182</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 10 Dec 2014 16:34:15 GMT</pubDate></item></channel></rss>