<?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[Polymorphie Problem]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe zwei Klassen <em>A</em> und <em>B</em> welche beide von der abstrakten Klasse <em>C</em> erben.<br />
Zusätzlich habe ich einen Vektor in dem sich Elemente vom Typ <em>C</em>* befinden. Nun soll ich die Anzahl der <em>A</em>'s und <em>B</em>'s in dem Vektor zählen.</p>
<p>Wie kann man das machen? Ich dachte jetzt an Methoden wie <em>isA()</em> oder <em>isB()</em> in der <em>C</em> Klasse. Aber das ist ja nicht wirklich Sinn der Sache. Wie kann ich das machen unter &quot;Ausnutzen&quot; der Polymorphie?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333810/polymorphie-problem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 08:58:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333810.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Aug 2015 19:52:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 19:52:28 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe zwei Klassen <em>A</em> und <em>B</em> welche beide von der abstrakten Klasse <em>C</em> erben.<br />
Zusätzlich habe ich einen Vektor in dem sich Elemente vom Typ <em>C</em>* befinden. Nun soll ich die Anzahl der <em>A</em>'s und <em>B</em>'s in dem Vektor zählen.</p>
<p>Wie kann man das machen? Ich dachte jetzt an Methoden wie <em>isA()</em> oder <em>isB()</em> in der <em>C</em> Klasse. Aber das ist ja nicht wirklich Sinn der Sache. Wie kann ich das machen unter &quot;Ausnutzen&quot; der Polymorphie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462018</guid><dc:creator><![CDATA[polyfrage123]]></dc:creator><pubDate>Sat, 01 Aug 2015 19:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 20:18:54 GMT]]></title><description><![CDATA[<p>Warum willst du das machen? Das könnte an sich schon ein Designfehler sein. Wenn du eine Liste von C hast, sollte es optimalerweise keinen Grund geben zu wissen, wieviele Objekte davon A oder B sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462019</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 01 Aug 2015 20:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 21:02:01 GMT]]></title><description><![CDATA[<p>Ich kann mir einige Beispiele überlegen, wo das notwendig ist - Beispiel: Liste von C-Pointern, Elemente der Klasse A kommen nicht mehr hinzu, Elemente der Klasse B schon, und für die A-Elemente soll ein zusammenhängender Speicherblock reserviert werden, in dem dann irgendwas geschrieben wird. Und das ist nur der erste, der mir einfällt.</p>
<p>Stichwort ist <code>dynamic_cast</code> (Prüft, ob Basis-Pointer in Ableitungs-Pointer umgewandelt werden kann). Wenn bei dem kein NULL-Pointer rauskommt, dann ist der C-Pointer ein valider Pointer von A oder B.</p>
<p>Allerdings sei gesagt, dass hierfür Run-Time Type Information (kurz: RTTI) zur Verfügung stehen müssen, sonst geht das nicht. Sprich, du musst darauf achten, dass diese vom Compiler generiert werden. Und es ist ein wenig langsam, habe ich zumindest noch so gelernt. Und unschön soll es auch sein, aber da ich hauptsächlich nicht C++ mache, weiß ich das auch nur aus externer Quelle.<br />
Ohne mehr über das, was du versuchst, zu wissen, können wir allerdings auch nicht mehr sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462022</guid><dc:creator><![CDATA[dachschaden_off]]></dc:creator><pubDate>Sat, 01 Aug 2015 21:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 21:15:07 GMT]]></title><description><![CDATA[<p>dachschaden_off schrieb:</p>
<blockquote>
<p>Ich kann mir einige Beispiele überlegen, wo das notwendig ist</p>
</blockquote>
<p>Natürlich kann ich mir da auch paar Beispiele vorstellen. Aber zuerst muss man klären, ob es sich um so einen Fall handelt, bevor jemand Anti-Pattern verinnerlicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462025</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 01 Aug 2015 21:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 21:47:51 GMT]]></title><description><![CDATA[<p>Die Objekte der Klassen A/B beeinflussen sich gegenseitig durch ihren Typ und mein gewünschter Weg ist der einzig mögliche (leider). Auch wenn es schwer ist: Ich bitte darum das einfach mal so hinzunehmen.</p>
<p><em>dynamic_cast</em> wollte ich wirklich vermeiden, was gäbe es sonst noch so für Möglichkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462031</guid><dc:creator><![CDATA[polyfrage123]]></dc:creator><pubDate>Sat, 01 Aug 2015 21:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 21:53:24 GMT]]></title><description><![CDATA[<p>Außer dynamic_cast könntest du höchstens noch das Visitor Pattern probieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462032</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 01 Aug 2015 21:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sat, 01 Aug 2015 21:54:11 GMT]]></title><description><![CDATA[<p><a href="http://lmgtfy.com/?q=c%2B%2B+alternatives+to+dynamic_cast" rel="nofollow">Klick.</a></p>
<p>Das erste Ergebnis ist dann das <a href="http://stackoverflow.com/questions/20792163/alternative-to-dynamic-casting" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462033</guid><dc:creator><![CDATA[dachschaden_off]]></dc:creator><pubDate>Sat, 01 Aug 2015 21:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Sun, 02 Aug 2015 13:52:44 GMT]]></title><description><![CDATA[<p>polyfrage123 schrieb:</p>
<blockquote>
<p>Die Objekte der Klassen A/B beeinflussen sich gegenseitig durch ihren Typ und mein gewünschter Weg ist der einzig mögliche (leider). Auch wenn es schwer ist: Ich bitte darum das einfach mal so hinzunehmen.</p>
<p><em>dynamic_cast</em> wollte ich wirklich vermeiden, was gäbe es sonst noch so für Möglichkeiten?</p>
</blockquote>
<p>Du kannst ja mal konkret beschreiben, was du willst. Vielleicht hat ja wer eine Idee, wie du das Problem am besten löst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462089</guid><dc:creator><![CDATA[Bengo]]></dc:creator><pubDate>Sun, 02 Aug 2015 13:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie Problem on Mon, 03 Aug 2015 08:18:24 GMT]]></title><description><![CDATA[<p>dachschaden_off schrieb:</p>
<blockquote>
<p>Ich kann mir einige Beispiele überlegen, wo das notwendig ist - Beispiel: Liste von C-Pointern, Elemente der Klasse A kommen nicht mehr hinzu, Elemente der Klasse B schon, und für die A-Elemente soll ein zusammenhängender Speicherblock reserviert werden, in dem dann irgendwas geschrieben wird.</p>
</blockquote>
<p>Dann solltest du einfach in der Basisklasse zwei Funktionen haben, z.b. GetMemoryNeeded und WriteMemoryblock, die dort als return 0 und nop definiert sind. Das ganze in A dann entsprechend ueberladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2462191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2462191</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Mon, 03 Aug 2015 08:18:24 GMT</pubDate></item></channel></rss>