<?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[&amp;quot;instanceof&amp;quot; in C++]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse und mehrere weitere davon abgeleitete Klassen. Wenn ich jetzt ein Objekt einer Sub-Klasse habe, dieses aber in einem Pointer vom Typ der Superklasse speichere, gibt es dann eine Möglichkeit festzustellen, um welchen Typ es sich dabei wirklich handelt?</p>
<p>Im Prinzip suche ich sowas wie den instanceof-Operator in Java. Oder muss ich mir sowas über eine Art virtuelle getType()-Methode selber schreiben?</p>
<p>Danke!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155810/quot-instanceof-quot-in-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 16:30:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155810.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Aug 2006 19:47:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;instanceof&amp;quot; in C++ on Wed, 09 Aug 2006 19:47:14 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse und mehrere weitere davon abgeleitete Klassen. Wenn ich jetzt ein Objekt einer Sub-Klasse habe, dieses aber in einem Pointer vom Typ der Superklasse speichere, gibt es dann eine Möglichkeit festzustellen, um welchen Typ es sich dabei wirklich handelt?</p>
<p>Im Prinzip suche ich sowas wie den instanceof-Operator in Java. Oder muss ich mir sowas über eine Art virtuelle getType()-Methode selber schreiben?</p>
<p>Danke!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114088</guid><dc:creator><![CDATA[ChrisR]]></dc:creator><pubDate>Wed, 09 Aug 2006 19:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;instanceof&amp;quot; in C++ on Wed, 09 Aug 2006 19:54:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>es gibt in C++ die Schlüsselworte <em>typeid</em> und <em>dynamic_cast</em>, die sowas können.<br />
Allerdings sind solche Typüberprüfungen oft ein falsches Konzept.<br />
Denn es ist ja grade bei polymorphen Klassenhierarchien der Witz, das nach dem Erstellen einer höheren Instanz die Schnittstellen der Basisklasse ausreichen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114093</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 09 Aug 2006 19:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;instanceof&amp;quot; in C++ on Wed, 09 Aug 2006 19:59:50 GMT]]></title><description><![CDATA[<p>Danke! In meinem Fall ist es glaube ich gerechtfertigt diese Schlüsselworte zu verwenden, wobei eine genaue Beschreibung des konkreten Problems jetzt zu lang würde und vermutlich ohnehin niemanden interessiert <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/1114096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114096</guid><dc:creator><![CDATA[ChrisR]]></dc:creator><pubDate>Wed, 09 Aug 2006 19:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;instanceof&amp;quot; in C++ on Thu, 10 Aug 2006 07:57:46 GMT]]></title><description><![CDATA[<p>ChrisR schrieb:</p>
<blockquote>
<p>...eine genaue Beschreibung des konkreten Problems jetzt zu lang würde und vermutlich ohnehin niemanden interessiert <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>
</blockquote>
<p>Mich schon <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>Liegt aber daran, dass ich eigentlich überzeugt bin, dass IMMER ein Designfehler vorliegt, wenn man sowas &quot;braucht&quot;. Deswegen wäre ich schon daran interessiert, weil es meine Grundthese entweder be- oder widerlegen könnte... <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>Aber wenn Dir das zu aufwändig ist, kann ich das auch verstehen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114283</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 10 Aug 2006 07:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;instanceof&amp;quot; in C++ on Thu, 10 Aug 2006 08:26:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">virtual BasePtr* Base::getDerivedAPtr(){return 0;}
DerivedAPtr* DerivedA::getDerivedAPtr(){return this;}
</code></pre>
<p>riecht schneller.</p>
<p>hab sowas sogar mal gebraucht (bzw rtti, mit dem das auch gegangen haben tun würde). details tun nix zur sache, im prinzip aber müßte folgendes einen guten geschmack davon geben.</p>
<pre><code class="language-cpp">//speicherlöcher mal in kauf genommen zwecks fokusierung 
//auf den kern des problems. außerdem machts auch mal spass, 
//sowas zu haben.
struct Summe
{
  Ausdruck* a;
  Ausdruck* b;
  Ausdruck* optimize(){
     a=a-&gt;optimize();
     b=b-&gt;optimize();
     if(Kostante* ka=a-&gt;getKonstantePtr())
        if(Konstante* kb=b-&gt;getKonstantePtr())
           return new Konstante(a-&gt;value+b-&gt;value);
     if(Konstante* ka=a-&gt;getKonstantePtr())
        if(ka-&gt;value==0)
           return b;
     if(Konstante* kb=b-&gt;getKonstantePtr())
        if(kb-&gt;value==0)
           return a;
  }
};
</code></pre>
<p>wenn ich mir recht überlege, würde es auch mit dem double-dispatching-code von &quot;mehr effektiv c++ programmieren&quot; gehen. nur scheint mir das mit dem getTypePtr recht harmonisch reinzupassen und hier mal zu gewinnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114312</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 10 Aug 2006 08:26:34 GMT</pubDate></item></channel></rss>