<?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[typeid für polymorphe Klasse ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einige Klassen wie folgt deklariert:</p>
<pre><code class="language-cpp">class a
{
};

class b: public a
{
};

class c: public a
{
};
</code></pre>
<p>Weiterhin habe ich zum Test drei Objekte instanziiert:</p>
<pre><code class="language-cpp">a* test1;
  a* test2;
  a* test3;

  test1 = new a;
  test2 = new b;
  test3 = new c;
</code></pre>
<p>Wenn ich nun den Typ des Objektes test2 oder test3 mit</p>
<pre><code class="language-cpp">typeid(*test2).name()
typeid(*test3).name()
</code></pre>
<p>abfragen will, kommt immer als Ergebniss Klasse a heraus. Welche möglichkeit gibt es herauszufinden, von welchem Typ *test2 und *test3 &quot;wirklich&quot; sind (*test2 sollte b sein, *test3 c) ?</p>
<p>Grüße<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149533/typeid-für-polymorphe-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 07:40:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149533.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Jun 2006 21:28:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Tue, 06 Jun 2006 21:28:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einige Klassen wie folgt deklariert:</p>
<pre><code class="language-cpp">class a
{
};

class b: public a
{
};

class c: public a
{
};
</code></pre>
<p>Weiterhin habe ich zum Test drei Objekte instanziiert:</p>
<pre><code class="language-cpp">a* test1;
  a* test2;
  a* test3;

  test1 = new a;
  test2 = new b;
  test3 = new c;
</code></pre>
<p>Wenn ich nun den Typ des Objektes test2 oder test3 mit</p>
<pre><code class="language-cpp">typeid(*test2).name()
typeid(*test3).name()
</code></pre>
<p>abfragen will, kommt immer als Ergebniss Klasse a heraus. Welche möglichkeit gibt es herauszufinden, von welchem Typ *test2 und *test3 &quot;wirklich&quot; sind (*test2 sollte b sein, *test3 c) ?</p>
<p>Grüße<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1072856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1072856</guid><dc:creator><![CDATA[Phunkafizer]]></dc:creator><pubDate>Tue, 06 Jun 2006 21:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Tue, 06 Jun 2006 21:32:52 GMT]]></title><description><![CDATA[<p>der thread titel ist irreführend. deine klasse a ist nicht polymorph (und das ist auch der grund für dein problem).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1072857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1072857</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 06 Jun 2006 21:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Tue, 06 Jun 2006 21:33:13 GMT]]></title><description><![CDATA[<p>Deine Klassen sind nicht polymorph, da sie keine einzige virtuelle Methode haben. Deshalb solltest du mind. den Destruktor virtuell deklarieren. Dann müsste das typeid auch korrekt arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1072858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1072858</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 06 Jun 2006 21:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Wed, 07 Jun 2006 09:55:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Danke für die schnellen Antworten. Ich habe nur versucht beigefügten Code kurz zu halten, in Wirklichkeit ist meine Klasse schon Polymorph (virtueller Destruktor und eine weitere virtuelle Methode).</p>
<p>Inzwischen hab ich auch noch etwas herausgefunden:<br />
Kompiliere ich das einfache Testprogramm mit Bloodshed Dev-C++ und starte es, werden die Typen wie gewünscht korrekt ausgegeben.<br />
Wird der selbe Code hingegen mit meinem Paradigm Compiler übersetzt (für einen Embedded 186er), liefert typeid immer nur die Basisklasse.</p>
<p>Sollte es sich dabei um einen Compiler-Bug handeln, oder ist selbiger nur irgendwie falsch parametriert ?</p>
<p>Stefan</p>
<p>Hier nochmal der gesamte Testcode:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

class a
{
	public:
   	virtual ~a();
};

class b: public a
{
	public:
   	~b();
};

class c: public a
{
	public:
   	~c();
};

a::~a() {}

b::~b() {}

c::~c() {}

int main(int argc, char *argv[])
{
	a *temp1, *temp2, *temp3;

   temp1 = new a;
   temp2 = new b;
   temp3 = new c;

   cout &lt;&lt; &quot;temp1: &quot; &lt;&lt; typeid(*temp1).name() &lt;&lt; endl;
   cout &lt;&lt; &quot;temp2: &quot; &lt;&lt; typeid(*temp2).name() &lt;&lt; endl;
   cout &lt;&lt; &quot;temp3: &quot; &lt;&lt; typeid(*temp3).name() &lt;&lt; endl;

   delete temp1;
   delete temp2;
   delete temp3;

  system(&quot;PAUSE&quot;);
  return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1073034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073034</guid><dc:creator><![CDATA[Phunkafizer]]></dc:creator><pubDate>Wed, 07 Jun 2006 09:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Wed, 07 Jun 2006 10:54:04 GMT]]></title><description><![CDATA[<p>&quot;Embedded&quot; sagt mir, das es um minimalen Speicherverbrauch geht. Kann mir vorstellen, das der Compiler absichtlich keine RTTI (Runtime Type Information) erzeugt. Evtl. kannst du die RTTI einschalten, das geht zumindest bei den &quot;großen&quot; Compilern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073072</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 07 Jun 2006 10:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to typeid für polymorphe Klasse ? on Wed, 07 Jun 2006 11:52:09 GMT]]></title><description><![CDATA[<p>Treffer versenkt!</p>
<p>Hab in der IDE eine Einstellung gefunden:</p>
<p>C++ Options: Enable Runtime Type Information</p>
<p>Nun geht's.</p>
<p>Verbindlichsten Dank!</p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073117</guid><dc:creator><![CDATA[Phunkafizer]]></dc:creator><pubDate>Wed, 07 Jun 2006 11:52:09 GMT</pubDate></item></channel></rss>