<?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[Map und Polymorphie? Unvereinbar?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem.</p>
<p>Ich habe eine Klasse</p>
<p>class Operator<br />
{<br />
......<br />
public:<br />
virtual void exucute();<br />
.......<br />
}</p>
<p>und eine Klasse</p>
<p>class Operator_Plus: public Operator<br />
{<br />
......<br />
public:<br />
virtual void exucute();<br />
.......<br />
}</p>
<p>wie man sieht sind die beiden voneinander abgeleitet und das funktioniert auch wunderbar....</p>
<p>jetzt habe ich folgendes Problem...</p>
<p>Ich erstelle folgende map:</p>
<p>map&lt;char,Operator&gt; my_map</p>
<p>my_map.insert(pair&lt;char,Operator&gt; ('+',op);</p>
<p>wobei op com typ &quot;const Operator_Plus&amp;&quot; ist</p>
<p>und füge dann einen Operator_Plus in die Map ein.<br />
Das Funktioniert wunderbar und ist deswegen nötig weil wie Operator_Plus noch viele Andere Operator_XXX Klassen von Operator abgeleitet werden sollen und in dieser Map gespeichert werden sollen...</p>
<p>wenn ich jetzt den Operator_Plus den ich vorher in die Map reingegeben habe wieder raushole und die Methode execute Aufrufe, dann wird sie von der Elternklasse aufgerufen.</p>
<p>Operator x=my_map['+'];<br />
x.execute();</p>
<p>Wie kann ich es schaffen dass die Methode von Operator_Plus afgerufen wird?</p>
<p>Vielen Dank im Vorhinein!</p>
<p>LG</p>
<p>René</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146073/map-und-polymorphie-unvereinbar</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 16:20:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146073.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 May 2006 20:38:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Map und Polymorphie? Unvereinbar? on Wed, 03 May 2006 20:38:34 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem.</p>
<p>Ich habe eine Klasse</p>
<p>class Operator<br />
{<br />
......<br />
public:<br />
virtual void exucute();<br />
.......<br />
}</p>
<p>und eine Klasse</p>
<p>class Operator_Plus: public Operator<br />
{<br />
......<br />
public:<br />
virtual void exucute();<br />
.......<br />
}</p>
<p>wie man sieht sind die beiden voneinander abgeleitet und das funktioniert auch wunderbar....</p>
<p>jetzt habe ich folgendes Problem...</p>
<p>Ich erstelle folgende map:</p>
<p>map&lt;char,Operator&gt; my_map</p>
<p>my_map.insert(pair&lt;char,Operator&gt; ('+',op);</p>
<p>wobei op com typ &quot;const Operator_Plus&amp;&quot; ist</p>
<p>und füge dann einen Operator_Plus in die Map ein.<br />
Das Funktioniert wunderbar und ist deswegen nötig weil wie Operator_Plus noch viele Andere Operator_XXX Klassen von Operator abgeleitet werden sollen und in dieser Map gespeichert werden sollen...</p>
<p>wenn ich jetzt den Operator_Plus den ich vorher in die Map reingegeben habe wieder raushole und die Methode execute Aufrufe, dann wird sie von der Elternklasse aufgerufen.</p>
<p>Operator x=my_map['+'];<br />
x.execute();</p>
<p>Wie kann ich es schaffen dass die Methode von Operator_Plus afgerufen wird?</p>
<p>Vielen Dank im Vorhinein!</p>
<p>LG</p>
<p>René</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050568</guid><dc:creator><![CDATA[Snap125]]></dc:creator><pubDate>Wed, 03 May 2006 20:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to Map und Polymorphie? Unvereinbar? on Wed, 03 May 2006 21:21:43 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ziemlich genau das gleiche Problem gab es letztens hier:<br />
<a href="http://www.fun-soft.de/showtopic.php?threadid=14900" rel="nofollow">http://www.fun-soft.de/showtopic.php?threadid=14900</a></p>
<p>MfG Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050581</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Wed, 03 May 2006 21:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Map und Polymorphie? Unvereinbar? on Thu, 04 May 2006 05:45:18 GMT]]></title><description><![CDATA[<p>Das Problem das du hast nennt man &quot;Slicing&quot;. Um es zu vermeiden musst du in<br />
deine map Basisklassen-<strong>Pointer</strong> stecken.<br />
Im Moment wird beim Einfügen eines Operator_plus-Objekt ein Operator-Objekt,<br />
als Kopie, erstellt das dann in der map steckt. Die Operator_Plus-Funktion<br />
geht definitiv verloren. Durch die Verwendung von Basisklassen-Pointer<br />
vermeidest du genau diesen Effekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050614</guid><dc:creator><![CDATA[CrazyHorse]]></dc:creator><pubDate>Thu, 04 May 2006 05:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Map und Polymorphie? Unvereinbar? on Thu, 04 May 2006 10:16:22 GMT]]></title><description><![CDATA[<p>CrazyHorse schrieb:</p>
<blockquote>
<p>Durch die Verwendung von Basisklassen-Pointer<br />
vermeidest du genau diesen Effekt.</p>
</blockquote>
<p>Nur zur Unterstützung: Genau dafür ist das Schlüsselwort virtual ja afaik auch da. Damit die korrekten Methoden des eigentlichen Objektes aufgerufen werden und nicht die einer Basisklasse, wenn Du nur einen Zeiger vom Typen Basisklasse auf das Objekt besitzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050762</guid><dc:creator><![CDATA[mantiz]]></dc:creator><pubDate>Thu, 04 May 2006 10:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to Map und Polymorphie? Unvereinbar? on Thu, 04 May 2006 18:18:47 GMT]]></title><description><![CDATA[<p>Ah... danke.</p>
<p>Ich hatte es eh schon mit map&lt;char,Operator*&gt; versucht aber in meiner Müdigkeit hatte ich geschrieben map&lt;char,*Operator&gt;... *lol*</p>
<p>jetzt gehts</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051065</guid><dc:creator><![CDATA[Snap125]]></dc:creator><pubDate>Thu, 04 May 2006 18:18:47 GMT</pubDate></item></channel></rss>