<?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[B erbt A, C erbt A, D erbt B UND C]]></title><description><![CDATA[<p>Hallo <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">class A ...
class B : public A ...
class C : public A ...

class D : public B, public C ...
</code></pre>
<p>Geht ja bekanntlich nicht.<br />
Aber kann man das nicht so hinbiegen dass B und C auf &quot;ein gemeinsames A&quot; zurückgreifen - wenn ihr verseht <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>
<p>Geht das nicht IRGENDWIE? Damit wären nette Sachen möglich <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240297/b-erbt-a-c-erbt-a-d-erbt-b-und-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 01:52:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240297.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 May 2009 21:14:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Mon, 04 May 2009 21:14:38 GMT]]></title><description><![CDATA[<p>Hallo <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">class A ...
class B : public A ...
class C : public A ...

class D : public B, public C ...
</code></pre>
<p>Geht ja bekanntlich nicht.<br />
Aber kann man das nicht so hinbiegen dass B und C auf &quot;ein gemeinsames A&quot; zurückgreifen - wenn ihr verseht <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>
<p>Geht das nicht IRGENDWIE? Damit wären nette Sachen möglich <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705598</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Mon, 04 May 2009 21:14:38 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Mon, 04 May 2009 21:19:00 GMT]]></title><description><![CDATA[<p>ja. beim erben virtual dazuschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705599</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 04 May 2009 21:19:00 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Mon, 04 May 2009 21:21:13 GMT]]></title><description><![CDATA[<p>Ty 4 reply</p>
<p>volkard schrieb:</p>
<blockquote>
<p>ja. beim erben virtual dazuschreiben.</p>
</blockquote>
<p><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="😕"
    /> Wie genau meinst du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705600</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Mon, 04 May 2009 21:21:13 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Mon, 04 May 2009 21:22:25 GMT]]></title><description><![CDATA[<p><a href="http://www.cpp-tutor.de/cpp/le15/le15_04.htm" rel="nofollow">so</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705601</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 04 May 2009 21:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Mon, 04 May 2009 21:26:29 GMT]]></title><description><![CDATA[<p>Ganz ausgezeichnet.<br />
Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705603</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Mon, 04 May 2009 21:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 12:17:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Base {};

class A : virtual Base {};

class B : virtual Base {};

class Deri : public A, public B {};

int main()
{
    Base* d = new Deri();
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<blockquote>
<p>test.cpp: In function »int main()«:<br />
test.cpp:14: Fehler: »Base« ist eine nicht erreichbare Basis von »Deri«</p>
</blockquote>
<p>Bitte sagt mir dass ich die Deri Instanzen zu einem Base* casten kann! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705821</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Tue, 05 May 2009 12:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 12:33:47 GMT]]></title><description><![CDATA[<p>virtual ist gut, aber noch lange kein grund, public wegzumachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705837</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 05 May 2009 12:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 12:38:35 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>virtual ist gut, aber noch lange kein grund, public wegzumachen.</p>
</blockquote>
<p>Haha ja stimmt <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>
<p>Ich wollte mit dem Beispiel einen Bug reproduzieren aber das hat mir Mr. Leichtsinn versaut <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>Ich bekomme folgenden Fehler:</p>
<blockquote>
<p>src/core/allo.h: In member function »BASE* allocator_t&lt;BASE, DERIVED, SIZE&gt;::alloc(const BASE*) [with BASE = faceGraph_t, DERIVED = graph3DLab_t, int SIZE = 1]«:<br />
src/main.cpp:117: instantiated from here<br />
../../../../SAK3D/src/core/allo.h:46: Fehler: Es kann nicht von Basis »graph_t« in abgeleiteten Typ »lab_t« über virtuelle Basis »faceGraph_t« gewandelt werden<br />
make: *** [build/obj/main.o] Fehler 1</p>
</blockquote>
<p>Ich poste gleich den code ... aber vielleicht sagt ja die Fehlermeldung schon etwas mehr als mi? <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>
<p>Ty</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705843</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Tue, 05 May 2009 12:38:35 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:25:12 GMT]]></title><description><![CDATA[<p>Ich habe Fortschritte gemacht.<br />
Alles lässt sich auf dieses Problem reduzieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Base {};

class A : virtual public Base {};

class B : virtual public Base {};

class Deri : public A, public B {};

int main()
{
    Base* d = new Deri();

    Deri* test = (Deri*)d;
}
</code></pre>
<p>Ein Up-cast geht doch beim klassischen erben auch!</p>
<p>[quote]bug.cpp: In function »int main()«:<br />
bug.cpp:16: Fehler: Es kann nicht von Basis »Base« in abgeleiteten Typ »Deri« über virtuelle Basis »Base« gewandelt werden[cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705885</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Tue, 05 May 2009 13:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:30:09 GMT]]></title><description><![CDATA[<p>schätze, das geht nicht mehr so einfach.</p>
<pre><code class="language-cpp">class Base {
    public:
    virtual ~Base(){}
};

class A : virtual public Base {};

class B : virtual public Base {};

class Deri : public A, public B {};

int main()
{
    Base* d = new Deri();

    Deri* test = dynamic_cast&lt;Deri*&gt;(d);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1705891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705891</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 05 May 2009 13:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:31:08 GMT]]></title><description><![CDATA[<p>derivate schrieb:</p>
<blockquote>
<p>Ein Up-cast geht doch beim klassischen erben auch!</p>
</blockquote>
<p>du meinst downcast. die wurzel ist oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705893</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 05 May 2009 13:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:31:44 GMT]]></title><description><![CDATA[<p>Zwei Probleme:<br />
1. Der C Cast reicht hier definitiv nicht mehr aus. Ein dynamic_cast muss her. Auf C Cast sollte man beim polymorphen Casten sowieso verzichten. Grundsätzlich ist der Verzicht in C++ auf C Cast allgemein von Vorteil.<br />
2. Um so ein Down-Cast machen zu können, brauchst du eine vTable. Die ist aber nicht vorhanden, weil du keine virtuelle Funktionen hast. Mach am einfachsten einen virtuellen public Destruktor in die Baseklasse rein.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705894</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 05 May 2009 13:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:39:14 GMT]]></title><description><![CDATA[<p>Ihr seid großartig! Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Sollte man bei jedem dynamic_cast prüfen ob er erfolgreich war??</p>
<pre><code class="language-cpp">if(dynamic_cast&lt;Deri*&gt;(d)) cout &lt;&lt; &quot;supi&quot; &lt;&lt; endl; else cout &lt;&lt; &quot;!supi&quot; &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1705902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705902</guid><dc:creator><![CDATA[derivate]]></dc:creator><pubDate>Tue, 05 May 2009 13:39:14 GMT</pubDate></item><item><title><![CDATA[Reply to B erbt A, C erbt A, D erbt B UND C on Tue, 05 May 2009 13:46:12 GMT]]></title><description><![CDATA[<p>derivate schrieb:</p>
<blockquote>
<p>Ihr seid großartig! Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Sollte man bei jedem dynamic_cast prüfen ob er erfolgreich war??</p>
<pre><code class="language-cpp">if(dynamic_cast&lt;Deri*&gt;(d)) cout &lt;&lt; &quot;supi&quot; &lt;&lt; endl; else cout &lt;&lt; &quot;!supi&quot; &lt;&lt; endl;
</code></pre>
</blockquote>
<p>wenn die daten funktionsargumente sind, eher schon. könnte ja jeder kommen, und dir mist schicken.<br />
wenn du selber die daten gebastelt hast und sicher bist, daß nicht 0 rauskommen kann, kannste den test auch lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705909</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 05 May 2009 13:46:12 GMT</pubDate></item></channel></rss>