<?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[Dominante Angelegenheit :D]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

class type_a
{
public:
    virtual void do_it() = 0;
};

class type_b : virtual public type_a
{
};

class type_c : virtual public type_a
{
public:
    virtual void do_it()
    {
        wcout &lt;&lt; L&quot;erledigt.&quot; &lt;&lt; endl;
    }
};

class type_d : public type_b,
               public type_c
{
};

int main()
{
    type_d obj;
    obj.do_it();
    return 0;
}
</code></pre>
<p>Compiler schrieb:</p>
<blockquote>
<p>warning C4250: 'type_d' : inherits 'type_c::type_c::do_it' via dominance</p>
</blockquote>
<p>Was bedeutet das für mich und wie löse ich dieses Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184253/dominante-angelegenheit-d</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 15:48:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184253.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jun 2007 15:52:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 15:52:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

class type_a
{
public:
    virtual void do_it() = 0;
};

class type_b : virtual public type_a
{
};

class type_c : virtual public type_a
{
public:
    virtual void do_it()
    {
        wcout &lt;&lt; L&quot;erledigt.&quot; &lt;&lt; endl;
    }
};

class type_d : public type_b,
               public type_c
{
};

int main()
{
    type_d obj;
    obj.do_it();
    return 0;
}
</code></pre>
<p>Compiler schrieb:</p>
<blockquote>
<p>warning C4250: 'type_d' : inherits 'type_c::type_c::do_it' via dominance</p>
</blockquote>
<p>Was bedeutet das für mich und wie löse ich dieses Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305013</guid><dc:creator><![CDATA[Dominus]]></dc:creator><pubDate>Wed, 13 Jun 2007 15:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 15:56:45 GMT]]></title><description><![CDATA[<p>msdn schrieb:</p>
<blockquote>
<p>Two or more members have the same name. The one in class2 is inherited because it is a base class for the other classes that contained this member.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1305017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305017</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 13 Jun 2007 15:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 15:58:10 GMT]]></title><description><![CDATA[<p>Ja das hab ich auch grad gelesen. Aber wie beheb ich das Problem. Es scheint ja relativ häufig vorzukommen wenn man Multiple-Inheritance verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305018</guid><dc:creator><![CDATA[Dominus]]></dc:creator><pubDate>Wed, 13 Jun 2007 15:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 16:03:29 GMT]]></title><description><![CDATA[<p>do_it() auch in type_d überschreiben! <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/1305025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305025</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 16:04:30 GMT]]></title><description><![CDATA[<p>Lol. Dabei wollte ich doch Multiple-Inheritance verwenden um genau sowas zu verhindern. Na dann... Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305026</guid><dc:creator><![CDATA[Dominus]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 16:06:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich glaube nicht, dass das unbedingt etwas mit &quot;multiple inheritance&quot; zu tun hat, sondern eher mit &quot;viel Vererbung&quot; ... das kann also ebensogut mit &quot;tiefen&quot; Hierarchien kommen.</p>
<p>Wie Du das behebst ? Ganz einfach: Sinnvolles Design ! <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>
<p>Wenn Du von einer Klasse erbst, die &quot;do_it()&quot; kann, dann sehe ich eigentlich keinen Grund, warum Du Deiner Klasse ein eigenes &quot;do_it()&quot; verpassen solltest .. höchstens durch Überschreiben einer virtuellen Funktion (und da tritt das Problem eben nicht auf).<br />
Eigentlich sehe ich das höchstens mit privaten &quot;Hilfsfunktionen&quot; in den Basisklassen ... aber auch auch gilt mit gutem Grund: Implementation gehört in &quot;Blattklassen&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305027</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:06:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 16:07:55 GMT]]></title><description><![CDATA[<p>Du solltest übrigens ganz dringend einen virtuellen Destruktor in type_a haben! Diese Diamantenvererbung ist ohnehin immer eine recht gefährliche Angelegenheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305028</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 16:15:59 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Du solltest übrigens ganz dringend einen virtuellen Destruktor in type_a haben!</p>
</blockquote>
<p>Habe ich bereits. Der Code den ich gepostet habe ist natürlich eine künstliche Vereinfachung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305034</guid><dc:creator><![CDATA[Dominus]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dominante Angelegenheit :D on Wed, 13 Jun 2007 17:20:32 GMT]]></title><description><![CDATA[<p>Dominus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

class type_a
{
public:
    virtual void do_it() = 0;
};

class type_b : virtual public type_a
{
};

class type_c : virtual public type_a
{
public:
    virtual void do_it()
    {
        wcout &lt;&lt; L&quot;erledigt.&quot; &lt;&lt; endl;
    }
};

class type_d : public type_b,
               public type_c
{
};

int main()
{
    type_d obj;
    obj.do_it();
    return 0;
}
</code></pre>
</blockquote>
<p>Wenn du willst, das type_b von type_a erben soll, aber denoch nicht die Methode do_it() haben soll, dann wäre folgendes besser:</p>
<pre><code class="language-cpp">class type_a_Real
{
public:

};

class type_a : public type_a_Real
{
public:
    virtual void do_it() = 0;
};

class type_b : virtual public type_a_Real
{
};

class type_c : virtual public type_a
{
public:
    virtual void do_it()
    {
        wcout &lt;&lt; L&quot;erledigt.&quot; &lt;&lt; endl;
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1305065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305065</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Jun 2007 17:20:32 GMT</pubDate></item></channel></rss>