<?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 Problem]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem was in Java wie folgt aussehen würde:</p>
<p>if(x instanceof(ClassX)) {<br />
....<br />
}</p>
<p>Ich habe gelesen das es in C/C++ mit dynamic_cast realisiert wird. Funktioniert aber nicht, weil meine Superklasse kein polymorpher Typ ist. Was kann ich stattdessen verwenden?</p>
<p>Danke!<br />
mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175539/dynamic_cast-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:03:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175539.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Mar 2007 18:57:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamic_cast Problem on Sun, 11 Mar 2007 18:57:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem was in Java wie folgt aussehen würde:</p>
<p>if(x instanceof(ClassX)) {<br />
....<br />
}</p>
<p>Ich habe gelesen das es in C/C++ mit dynamic_cast realisiert wird. Funktioniert aber nicht, weil meine Superklasse kein polymorpher Typ ist. Was kann ich stattdessen verwenden?</p>
<p>Danke!<br />
mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243553</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Sun, 11 Mar 2007 18:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast Problem on Sun, 11 Mar 2007 19:15:48 GMT]]></title><description><![CDATA[<p>schauen, ob du die adresse deines objekts in einen zeiger auf die superklasse casten kannst.<br />
damit du das dann in einem if verwenden kannst, könnte vielleicht ein wenig tmplate-alcemie mit sfinea angebracht sein.</p>
<p>such mal in <a href="http://www.mitp.de/imperia/md/content/vmi/29842/1.pdf" rel="nofollow">http://www.mitp.de/imperia/md/content/vmi/29842/1.pdf</a> nach IsDerived</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243565</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 11 Mar 2007 19:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast Problem on Mon, 12 Mar 2007 00:51:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:</p>
<p>In boost gibt es eine fertige Implementierung &quot;is_base_and_derived&quot; - was denke ich genau das tut was du beschreibst. Wird aber hier denke ich nicht viel bringen, da ich schätze dass &quot;x&quot; wohl ein Basisklassenzeiger sein wird.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15617">@shed</a>:</p>
<p>Dynamisches &quot;instance of&quot; gibts in C++ nicht. dynamic_cast funktioniert für die meisten Fälle, aber wie du schon bemerkt hast nur wenn der Typ des Pointers (der Referenz) von dem du ausgehst &quot;polymorph&quot; ist, also min. eine virtuelle Funktion hat. Wenn du dieses &quot;instance of&quot; wirklich brauchst wäre wohl die einfachste Möglichkeit der Basisklasse eine virtuelle Funktion zu schenken.</p>
<p>Ich denke aber eher dass du irgendwo in deinem Design einen Knopf hast, sonst solltest du eigentlich garnicht den Fall haben &quot;instance of&quot; von einem Typ weg machen zu müssen der nicht polymorph ist. Ich meine um *irgendwas* sinnvoll mit einem Basisklassen-Zeiger anstellen zu können *muss* das Ding fast virtuelle Funktionen haben.</p>
<p>Das einzige mal wo ich jemals vor der selben Frage stand war wo ich ne Funktion machen wollte, die Exceptions auswerten sollte. Der Funktion wollte ich natürlich nen &quot;std::exception const&amp;&quot; mitgeben, und war dann etwas enttäuscht dass das Dumme Ding (tm) nicht polymorph ist, ich also den eigentlichen Typ nichtmehr ermitteln kann. Habe da auch keine Lösung gefunden, da AFAIK keine existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243712</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 12 Mar 2007 00:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to dynamic_cast Problem on Mon, 12 Mar 2007 10:35:53 GMT]]></title><description><![CDATA[<p>Die Basisklasse sollte immer mindestens eine virtuelle funktion haben, den Destructor.<br />
Ansonsten ist ableiten eh gefaehrlich, wenn man dann doch den basiszeiger der Klasse ohne die vtable verwendet, und darauf mal nen delete verwendet.</p>
<p>Entweder man versteckt also den Fact das man von ner nichtvirtuellen klasse abgeleitet hat (in dem man Zeiger auf die basisklasse nicht zulaesst) oder man leitet ned ab. Alles andere ist eh schmu .... von daher ist der dynamic_cast eh ausreichend.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243843</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 12 Mar 2007 10:35:53 GMT</pubDate></item></channel></rss>