<?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 Klassen identifizieren]]></title><description><![CDATA[<p>Wenn man Klassen</p>
<pre><code class="language-cpp">class Base {}; 
class Der1: public Base {}; 
class Der2: public Base;{}

Der1 d1;
Der2 d2;

std::vector&lt;Base*&gt; vBase;
vBase.push_back(&amp;d1);
vBase.push_back(&amp;d2);
</code></pre>
<p>benutzt, wie kann man herausfinden, ob ein Iterator auf vBase gerade auf Der1 oder Der2 zeigt?<br />
Ich koennte natuerlich eine virtuelle &quot;Identifikationsfunktion&quot; bereitstellen, doch das scheint mir unelegant. Gibt es eine andere Moeglichkeit?</p>
<p>Tim</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275764/abgeleitete-klassen-identifizieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 16:16:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275764.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Oct 2010 15:37:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 15:37:47 GMT]]></title><description><![CDATA[<p>Wenn man Klassen</p>
<pre><code class="language-cpp">class Base {}; 
class Der1: public Base {}; 
class Der2: public Base;{}

Der1 d1;
Der2 d2;

std::vector&lt;Base*&gt; vBase;
vBase.push_back(&amp;d1);
vBase.push_back(&amp;d2);
</code></pre>
<p>benutzt, wie kann man herausfinden, ob ein Iterator auf vBase gerade auf Der1 oder Der2 zeigt?<br />
Ich koennte natuerlich eine virtuelle &quot;Identifikationsfunktion&quot; bereitstellen, doch das scheint mir unelegant. Gibt es eine andere Moeglichkeit?</p>
<p>Tim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968058</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Wed, 20 Oct 2010 15:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 15:50:59 GMT]]></title><description><![CDATA[<p>Wenn Du das herausfinden musst, stimmt meist was mit dem Design nicht. Die Abstraktion über Base macht man i.d.R gerade weil es egal ist ob man ein Der1 oder Der2 hat, sie sind austauschbar.<br />
Wenn man doch eine Unterscheidung braucht, bietet sich das Vistor Pattern an, das aber meistens doch nicht sehr elegant ist (es sei denn die Base Hierachie wird eigentlich nie erwietert und es kommen nur neue Funktionen dazu).<br />
Oder eine dumpfe Type switche mit dynamic_cast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968066</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Wed, 20 Oct 2010 15:50:59 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 16:01:02 GMT]]></title><description><![CDATA[<p>Ich wuerde gerne herausfinden, wie ich das, was ich vorhabe, besser realisieren sollte. Das Gefuehl, dass es nicht ganz ideal ist, hatte ich auch schon.<br />
Ich habe zwei Klassen, A und B, von denen ich jeweils einen std::vector&lt;A&gt; und std::vector&lt;B&gt; habe.<br />
Jetzt moechte ich die beste Kette (a1,b1,a2,b2,a3,b3,...) finden. Fuer die Bestimmung von &quot;gut&quot; kann ich einen Wert berechnen, muss dafuer allerdings wissen, ob die Kette mit einer Klasse Typ A oder Typ B beginnt. Ich weiss dafuer bestimmt, dass Klasse A und Klasse B sich immer abwechseln.</p>
<p>Um ueberhaupt diese heterogene Kette speichern und weiterverarbeiten zu koennen, wollte ich eben eine Basis-Klasse Base anlegen und zwei Derivate DerA und DerB, die jeweils Zeiger auf Klasse A bzw. B enthalten (und vielleicht weitere Informationen, wie z.B., dass a1 bereits benutzt ist, damit es kein zweites Mal in der Kette vorkommt).</p>
<p>Die Klassen A und B sind allerdings in der Tat recht unterschiedlich.</p>
<p>Ich hoffe, diese Beschreibung reicht bereits fuer eine erhellende Kritik. Ist es z.B. besser, zwei parallele Vektoren je aus A und B zu haben - da sich A und B in der Kette immer abwechseln, waere das prinzipiell machbar. Ich waere auch ueber Literaturhinweise dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968074</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Wed, 20 Oct 2010 16:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 17:00:19 GMT]]></title><description><![CDATA[<p>Kannst Du die Berechnungsfunktion nicht in die Subklassen packen und polymorph aufrufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968115</guid><dc:creator><![CDATA[Panke]]></dc:creator><pubDate>Wed, 20 Oct 2010 17:00:19 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 17:15:35 GMT]]></title><description><![CDATA[<p>Was ist denn das Problem mit std::vector&lt;A&gt; und std::vector&lt;B&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968129</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Wed, 20 Oct 2010 17:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 18:02:38 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Was ist denn das Problem mit std::vector&lt;A&gt; und std::vector&lt;B&gt;?</p>
</blockquote>
<p>Ich habe kein Problem damit, ich bin nur nicht erfahren genug um zu wissen, was fuer ein solches Konzept die sauberste Implementierung ist, und bin deswegen fuer Ratschlaege und Kommentare sehr dankbar. Habe auch schon mit einer Klasse begonnen, die die beiden vectoren vereinbart.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968148</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Wed, 20 Oct 2010 18:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to abgeleitete Klassen identifizieren on Wed, 20 Oct 2010 21:10:00 GMT]]></title><description><![CDATA[<p>was Du suchst ist wahrscheinlich der dynamic_cast</p>
<p>class Base{};<br />
class A:public Base{};<br />
class B:public Base{};</p>
<p>Base* tmp = new A();</p>
<p>if ( dynamic_cast&lt;A*&gt;(tmp) != NULL )<br />
{<br />
/// es handelt sich um ein Object von Type A<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1968256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1968256</guid><dc:creator><![CDATA[LEO_III]]></dc:creator><pubDate>Wed, 20 Oct 2010 21:10:00 GMT</pubDate></item></channel></rss>