<?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[dynamic_cast]]></title><description><![CDATA[<p>hallo!</p>
<p>ich habe folgende klassenhierarchie:</p>
<pre><code class="language-cpp">class Person{...};
class Artist: public Person{...};
</code></pre>
<p>nun möchte ich folgenden code ausführen:</p>
<pre><code class="language-cpp">Person* p = new Artist(&quot;phil&quot;,&quot;collins&quot;);
Artist* a = dynamic_cast&lt;Artist*&gt;(p);
</code></pre>
<p>will ich es kompilieren bzw debuggen (mit visual studio), bekomme ich folgenden fehler: Unhandled exception at 0x7c81eb33 in medialib.exe: Microsoft C++ exception: __non_rtti_object @ 0x0012fd18.</p>
<p>was mache ich falsch? sollte der cast nicht einfach 0 zurückliefern, wenn es sich um keinen artist handelt (zumal es sich ja hier um einen artist handelt)</p>
<p>lenzoi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127719/dynamic_cast</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 06:20:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127719.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Nov 2005 17:45:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamic_cast on Sat, 26 Nov 2005 17:45:27 GMT]]></title><description><![CDATA[<p>hallo!</p>
<p>ich habe folgende klassenhierarchie:</p>
<pre><code class="language-cpp">class Person{...};
class Artist: public Person{...};
</code></pre>
<p>nun möchte ich folgenden code ausführen:</p>
<pre><code class="language-cpp">Person* p = new Artist(&quot;phil&quot;,&quot;collins&quot;);
Artist* a = dynamic_cast&lt;Artist*&gt;(p);
</code></pre>
<p>will ich es kompilieren bzw debuggen (mit visual studio), bekomme ich folgenden fehler: Unhandled exception at 0x7c81eb33 in medialib.exe: Microsoft C++ exception: __non_rtti_object @ 0x0012fd18.</p>
<p>was mache ich falsch? sollte der cast nicht einfach 0 zurückliefern, wenn es sich um keinen artist handelt (zumal es sich ja hier um einen artist handelt)</p>
<p>lenzoi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927822</guid><dc:creator><![CDATA[lenzoi]]></dc:creator><pubDate>Sat, 26 Nov 2005 17:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sat, 26 Nov 2005 17:46:52 GMT]]></title><description><![CDATA[<p>Du musst wahrscheinlich erst RTTI (RunTime Type Information) einschalten. Geht über Commandline-Optionen bzw. Einstellungen in der IDE.<br />
geloescht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927823</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Sat, 26 Nov 2005 17:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sat, 26 Nov 2005 17:47:10 GMT]]></title><description><![CDATA[<p>Mach mal den D'tor virtuell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/927824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/927824</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Sat, 26 Nov 2005 17:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sat, 26 Nov 2005 23:01:54 GMT]]></title><description><![CDATA[<p>besten dank euch beiden für die promte hilfe!</p>
<p>es lag an der rtti, was mir bislang unbekannt war. was mich aber noch interessieren würde, was es in diesem zusammenhang für einen sinn hat den destruktor virtuell zu machen?</p>
<p>lenzoi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928068</guid><dc:creator><![CDATA[Lenzoi]]></dc:creator><pubDate>Sat, 26 Nov 2005 23:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 08:28:08 GMT]]></title><description><![CDATA[<p>Der Destruktor von Basisklassen muss virtuell sein, weil sonst die Zerstörung von abgeleiteten Objekten lt. C++-Standard nicht definiert ist.</p>
<p>&lt;edit&gt; verbessert: Schreibfehler Ctor/Dtor &lt;/edit&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928069</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Sun, 27 Nov 2005 08:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sat, 26 Nov 2005 23:57:08 GMT]]></title><description><![CDATA[<p>präziser: der destruktor von basiklassen muss virtuell sein, falls du ein objekt einer abgeleiteten klassen über einen pointer auf die basisklasse löschen willst (bin mir nicht ganz sicher - möglicherweise auch, falls ein temporary einer abgeleiteten klasse an eine referenz der basisklasse gebunden wird). andernfalls ist es nicht notwendig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928080</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 26 Nov 2005 23:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 02:48:59 GMT]]></title><description><![CDATA[<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928104</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 27 Nov 2005 02:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 08:22:36 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
</blockquote>
<p>Gemäss Standard 5.3.5.5 kann wohl nicht darauf verzichtet werden. <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/928121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928121</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 27 Nov 2005 08:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 08:23:25 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
</blockquote>
<p>Gemäss Standard 5.3.5.<strong>3</strong> kann wohl nicht darauf verzichtet werden. <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/928122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928122</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 27 Nov 2005 08:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 08:36:56 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
</blockquote>
<p>Gemäss Standard 5.3.5.<strong>3</strong> kann wohl nicht darauf verzichtet werden. <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>
</blockquote>
<p>stimmt doch gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928125</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 27 Nov 2005 08:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 08:49:44 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Redhead schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
</blockquote>
<p>Gemäss Standard 5.3.5.<strong>3</strong> kann wohl nicht darauf verzichtet werden. <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>
</blockquote>
<p>stimmt doch gar nicht.</p>
</blockquote>
<p>Wo siehst du da den Widerspruch. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/928131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928131</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 27 Nov 2005 08:49:44 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 09:13:14 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Redhead schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>IMHO kann auf den dtor auch verzichtet werden wenn mindestens eine virtuelle Methode definiert wird, hauptsache die vtable wird initiiert...</p>
</blockquote>
<p>Gemäss Standard 5.3.5.<strong>3</strong> kann wohl nicht darauf verzichtet werden. <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>
</blockquote>
<p>stimmt doch gar nicht.</p>
</blockquote>
<p>Wo siehst du da den Widerspruch. <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>
</blockquote>
<p>begründe mal deine aussage, das ist besser, als daß ich widersprüche suche, wo gar kein zusammenhang ist.</p>
<p>zur erinnerung:</p>
<pre><code class="language-cpp">Person* p = new Artist(&quot;phil&quot;,&quot;collins&quot;); 
Artist* a = dynamic_cast&lt;Artist*&gt;(p);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/928135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928135</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 27 Nov 2005 09:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 09:48:45 GMT]]></title><description><![CDATA[<p>Ich dachte dabei an folgendes Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Person
{
public:
  Person()
  {
    cout &lt;&lt; &quot;Person()&quot; &lt;&lt; endl;
  };

  ~Person()
  {
    cout &lt;&lt; &quot;~Person()&quot; &lt;&lt; endl;
  };

  virtual dummy()
  {
  };
};

class Artist : public Person
{
public:
  Artist() 
  {
    cout &lt;&lt; &quot;Artist()&quot; &lt;&lt; endl;
  };

  ~Artist()
  {
    cout &lt;&lt; &quot;~Artist()&quot; &lt;&lt; endl;
  }
};

int main()
{
  Person* p = new Artist;
  Artist* a = dynamic_cast&lt;Artist*&gt;(p);

  delete p;

  return 0;
}
</code></pre>
<p>von wegen fehlendem virtual destructor von Person.</p>
<p>Hab ich (deiner Meinung nach) was überlesen/übersehen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/928150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928150</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 27 Nov 2005 09:48:45 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 10:02:45 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>von wegen fehlendem virtual destructor von Person.<br />
Hab ich (deiner Meinung nach) was überlesen/übersehen. <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>
</blockquote>
<p>du hast lediglich</p>
<pre><code class="language-cpp">delete p;
</code></pre>
<p>frei erfunden. ich dachte natürlich an gar kein delete. wozu auch? und wenn doch mal eins sein müßte, dann ein</p>
<pre><code class="language-cpp">delete a;
</code></pre>
<p>du magst ja recht haben, wenn du meinst, daß ein virtueller destruktor vermutlich sinnvoll sein wird, wenn man betrachtet, wie das programm in einigen monaten ausgebau sein wird. aber dein</p>
<blockquote>
<p>Gemäss Standard 5.3.5.3 kann wohl nicht darauf verzichtet werden.</p>
</blockquote>
<p>klingt danach, als würde der standard hier was erzwingen, was er nicht tut. statt &quot;Gemäss Standard 5.3.5.3&quot; wäre was wie &quot;damit delete p; geht&quot; besser lesbar und korrekt. und der leser kann sich gleich aussuchen, ob er &quot;delete p;&quot; mag und deiner folgerung folgt oder ob er es nicht mag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928155</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 27 Nov 2005 10:02:45 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast on Sun, 27 Nov 2005 10:08:02 GMT]]></title><description><![CDATA[<p>Ich hab den &quot;Ausgangscode&quot; nur für einen Teilausschnitt gehalten und gemutmasst<br />
das da wo ein new steht auch irgendwann (hoffentlich) eine delete kommt.<br />
<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 <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/928158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928158</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Sun, 27 Nov 2005 10:08:02 GMT</pubDate></item></channel></rss>