<?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[abgeleitete Klasseninstanzen über Basispointer-Array ansprechen?]]></title><description><![CDATA[<p>Hi zusammen</p>
<p>Ich hätte eine Frage zu Vererbung:</p>
<p>Wenn ich eine Klasse &quot;Base&quot; habe und verschiedene abgeleitete Klassen, z.B. &quot;Derived1&quot;, &quot;Derived2&quot; usw., kann ich dann über ein Array aus Pointern auf die Basisklasse auch die abgeleiteten Objekte ansprechen, also z.B. so:</p>
<pre><code class="language-cpp">Base* pArray[4];

Derived1 object1, object2;
Derived2 object3, object4;

pArray[0] = &amp;object1;
.
.
.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/214356/abgeleitete-klasseninstanzen-über-basispointer-array-ansprechen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 15:45:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214356.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 May 2008 11:37:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:37:13 GMT]]></title><description><![CDATA[<p>Hi zusammen</p>
<p>Ich hätte eine Frage zu Vererbung:</p>
<p>Wenn ich eine Klasse &quot;Base&quot; habe und verschiedene abgeleitete Klassen, z.B. &quot;Derived1&quot;, &quot;Derived2&quot; usw., kann ich dann über ein Array aus Pointern auf die Basisklasse auch die abgeleiteten Objekte ansprechen, also z.B. so:</p>
<pre><code class="language-cpp">Base* pArray[4];

Derived1 object1, object2;
Derived2 object3, object4;

pArray[0] = &amp;object1;
.
.
.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1518288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518288</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Wed, 28 May 2008 11:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:38:47 GMT]]></title><description><![CDATA[<p>ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518289</guid><dc:creator><![CDATA[positiv]]></dc:creator><pubDate>Wed, 28 May 2008 11:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:41:02 GMT]]></title><description><![CDATA[<p>Sehr schön. Danke vielmals. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518292</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Wed, 28 May 2008 11:41:02 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:41:08 GMT]]></title><description><![CDATA[<p>sorry, falsch gelesen. du kannst (ohne cast) alles benutzen, was base zur verfügung stellt. du kannst aber keine derived-spezifika nutzen, wenn du nur einen base-pointer hast. dafür musst du den basepointer hochcasten (am besten mit dynamic_cast&lt;&gt;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518293</guid><dc:creator><![CDATA[halb positiv]]></dc:creator><pubDate>Wed, 28 May 2008 11:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:46:35 GMT]]></title><description><![CDATA[<p>Aha d.h. also wenn ich in Base eine Methode foo() habe die als virtual<br />
deklariert ist und ich sie in Derived neu definiere wird bei einem Aufruf<br />
wie pArray[0]-&gt;foo() die Basis-Methode aufgerufen und nicht die abgeleitete oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518295</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Wed, 28 May 2008 11:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:49:04 GMT]]></title><description><![CDATA[<p>Dave__R schrieb:</p>
<blockquote>
<p>Aha d.h. also wenn ich in Base eine Methode foo() habe die als virtual<br />
deklariert ist und ich sie in Derived neu definiere wird bei einem Aufruf<br />
wie pArray[0]-&gt;foo() die Basis-Methode aufgerufen und nicht die abgeleitete oder?</p>
</blockquote>
<p>Doch, wird sie. Das ist der Sinn von virtual.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518298</guid><dc:creator><![CDATA[LordJaxom_lg]]></dc:creator><pubDate>Wed, 28 May 2008 11:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 11:53:06 GMT]]></title><description><![CDATA[<p>Ah ok. Wenn ich das also richtig verstanden habe können Basispointer redefinierte virtual Methoden ansprechen, aber nicht z.B. Methoden die in der abgeleiteten Klasse ganz neu eingeführt wurden oder?</p>
<p>Kann es sein dass man das mit den virtual Methoden unter &quot;late binding&quot; versteht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518305</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Wed, 28 May 2008 11:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 13:07:05 GMT]]></title><description><![CDATA[<p>Dave__R schrieb:</p>
<blockquote>
<p>Ah ok. Wenn ich das also richtig verstanden habe können Basispointer redefinierte virtual Methoden ansprechen, aber nicht z.B. Methoden die in der abgeleiteten Klasse ganz neu eingeführt wurden oder?</p>
</blockquote>
<p>Genau, Minibeispiel:</p>
<pre><code class="language-cpp">class A
{
  public:
    virtual ~A() {}

    void foo1() ( /*...*/ }
    virtual void foo2() ( /*...*/ }
};

class B : public A
{
  public:
    void foo1() ( /*...*/ }
    void foo2() ( /*...*/ }
    void foo3() ( /*...*/ }
};

int main()
{
  B b;
  A* a = &amp;b;

  a-&gt;foo1(); // hier wird A::foo1 aufgerufen, da kein virtual
  a-&gt;foo2(); // hier wird B::foo2 aufgerufen (virtuelle Methode)
  // a-&gt;foo3(); - Nicht möglich, nicht in der Schnittstelle von A enthalten
}
</code></pre>
<blockquote>
<p>Kann es sein dass man das mit den virtual Methoden unter &quot;late binding&quot; versteht?</p>
</blockquote>
<p>Da ich den Begriff in mehreren Zusammenhängen kenne (u.A. bei DLL-Schnittstellen) bin ich mit meiner Aussage etwas vorsichtig: Ja, so könnte man es nennen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518384</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 28 May 2008 13:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 13:09:23 GMT]]></title><description><![CDATA[<p>Hervorragend. Genau so etwas brauche ich. Danke vielmals <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1518387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518387</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Wed, 28 May 2008 13:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 14:33:40 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class A
{
  public:
    virtual ~A() {}

    void foo1() ( /*...*/ }
    virtual void foo2() ( /*...*/ }
};

class B : public A
{
  public:
    void foo1() ( /*...*/ }
    void foo2() ( /*...*/ }
    void foo3() ( /*...*/ }
};

int main()
{
  B b;
  A* a = &amp;b;

  a-&gt;foo1(); // hier wird A::foo1 aufgerufen, da kein virtual
  a-&gt;foo2(); // hier wird B::foo2 aufgerufen (virtuelle Methode)
  // a-&gt;foo3(); - Nicht möglich, nicht in der Schnittstelle von A enthalten
}
</code></pre>
</blockquote>
<p>In Zeile 25 würde aber ein dynamic_cast klappen:</p>
<pre><code class="language-cpp">dynamic_cast&lt;B*&gt;(a)-&gt;foo3(); // ruft B::foo3 auf
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1518484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518484</guid><dc:creator><![CDATA[cubeman]]></dc:creator><pubDate>Wed, 28 May 2008 14:33:40 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 14:46:55 GMT]]></title><description><![CDATA[<p>cubeman schrieb:</p>
<blockquote>
<p>In Zeile 25 würde aber ein dynamic_cast klappen:</p>
<pre><code class="language-cpp">dynamic_cast&lt;B*&gt;(a)-&gt;foo3(); // ruft B::foo3 auf
</code></pre>
</blockquote>
<p>Aber nur wenn die Konvertierung klappt... und ansonsten knallt es mit deiner Lösung (0-Zeiger) ! Das Ergebnis eines dynamic_cast gehört überprüft und nicht direkt verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518502</guid><dc:creator><![CDATA[asc@ausgeloggt]]></dc:creator><pubDate>Wed, 28 May 2008 14:46:55 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klasseninstanzen über Basispointer-Array ansprechen? on Wed, 28 May 2008 16:28:02 GMT]]></title><description><![CDATA[<p>Oder man verwendet dynamic-cast auf Referenzen oder boost's polymorphic_cast, die werfen eine Exception wenn die Konvertierung nicht klappt.</p>
<p>Wenn man sich allerdings 100%ig sicher ist, kann man auch einen einfachen static_cast machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1518599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1518599</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 28 May 2008 16:28:02 GMT</pubDate></item></channel></rss>