<?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[mehrfachvererbung -&amp;gt; ambiguous inheritance]]></title><description><![CDATA[<p>Hallo <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>ich habe eine DLL, die sich in ein interface-teil und ein implementationsteil<br />
aufteilt. allerdings habe ich jetzt ein problem mit mehrdeutiger vererbung:</p>
<pre><code class="language-cpp">////// das interface

struct Element
{
    virtual void func1() = 0;
};
struct Moveable : virtual public Element
{
    virtual void func2() = 0;
};
struct MoveableElement : virtual public Moveable
{
};

////// die implementation

class CElement : virtual public Element
{
public:
    void func1()
    {
    }
};
class CMoveable : virtual public Moveable
{
public:
    void func2()
    {
    }
};
class CMoveableElement : virtual public MoveableElement, public CMoveable, public CElement
{
};
</code></pre>
<p>das design ist vllt etwas fragwürdig, aber für das problem die beste lösung,<br />
zumal es funktoniert. jetzt sagt mir der compiler das func2 mehrdeutig<br />
vererbt wird.</p>
<p>man kann das natürlich durch eine inline funktion lösen, aber gibt es da nix<br />
was z.b. durch änderung der zugriffsspezifier funktioniert?</p>
<p>ich habe gehört, das der compiler immer die funktion mit dem höchsten zugriff<br />
nimmt.</p>
<p>MfG multible</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245164/mehrfachvererbung-gt-ambiguous-inheritance</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 21:55:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245164.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Jul 2009 13:08:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mehrfachvererbung -&amp;gt; ambiguous inheritance on Fri, 10 Jul 2009 13:08:04 GMT]]></title><description><![CDATA[<p>Hallo <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>ich habe eine DLL, die sich in ein interface-teil und ein implementationsteil<br />
aufteilt. allerdings habe ich jetzt ein problem mit mehrdeutiger vererbung:</p>
<pre><code class="language-cpp">////// das interface

struct Element
{
    virtual void func1() = 0;
};
struct Moveable : virtual public Element
{
    virtual void func2() = 0;
};
struct MoveableElement : virtual public Moveable
{
};

////// die implementation

class CElement : virtual public Element
{
public:
    void func1()
    {
    }
};
class CMoveable : virtual public Moveable
{
public:
    void func2()
    {
    }
};
class CMoveableElement : virtual public MoveableElement, public CMoveable, public CElement
{
};
</code></pre>
<p>das design ist vllt etwas fragwürdig, aber für das problem die beste lösung,<br />
zumal es funktoniert. jetzt sagt mir der compiler das func2 mehrdeutig<br />
vererbt wird.</p>
<p>man kann das natürlich durch eine inline funktion lösen, aber gibt es da nix<br />
was z.b. durch änderung der zugriffsspezifier funktioniert?</p>
<p>ich habe gehört, das der compiler immer die funktion mit dem höchsten zugriff<br />
nimmt.</p>
<p>MfG multible</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740410</guid><dc:creator><![CDATA[multible]]></dc:creator><pubDate>Fri, 10 Jul 2009 13:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to mehrfachvererbung -&amp;gt; ambiguous inheritance on Fri, 10 Jul 2009 23:26:42 GMT]]></title><description><![CDATA[<p>*push*</p>
<p>gibt es den da nichts??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1740768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1740768</guid><dc:creator><![CDATA[multiblw]]></dc:creator><pubDate>Fri, 10 Jul 2009 23:26:42 GMT</pubDate></item></channel></rss>