<?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[list mit verschiednen Objekten]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es möglich eine list&lt;&gt; zu erstellen die als Elemente Objekte verschiedener Klassen aufnehmen kann? Wenn ja wie bitte?</p>
<p>MfG<br />
Dosunmu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179374/list-mit-verschiednen-objekten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 04:59:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179374.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Apr 2007 22:07:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:07:40 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ist es möglich eine list&lt;&gt; zu erstellen die als Elemente Objekte verschiedener Klassen aufnehmen kann? Wenn ja wie bitte?</p>
<p>MfG<br />
Dosunmu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270316</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:10:23 GMT]]></title><description><![CDATA[<p>Normalerweise nimmt man dann einen Pointer auf die Basisklasse und fährt Polymorphie.</p>
<p>Sind die Klassen vollkommen unabhängig frage ich mich meistens was die eigentlich in einer gemeinsamen Liste zu tun haben...also bist du dir auch ganz sicher, dass das so passt? <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>Wenn ja, schau dir mal boost::any aus der Boost-Bibliothek <a href="http://www.boost.org" rel="nofollow">www.boost.org</a> an.</p>
<p>Direkt mit Boardmitteln hast du da keine Chance.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270317</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:10:23 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:11:44 GMT]]></title><description><![CDATA[<p>Nutzt boost::any keine Boardmittel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270318</guid><dc:creator><![CDATA[cancer]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:11:44 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:12:44 GMT]]></title><description><![CDATA[<p>Ja, doch klar. Ich meine nur, dass keine direkte Unterstützung vorhanden ist - und genau eine solche scheint der Threadersteller wohl zu suchen.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270319</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:12:44 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:17:32 GMT]]></title><description><![CDATA[<p>Die vier Klassen sind alle von der selben Klasse abgeleitet. Kannst du mir erklären wie das genau dann geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270320</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:21:37 GMT]]></title><description><![CDATA[<p>Dann willst du Polymorphie einsetzen <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>
<pre><code class="language-cpp">list&lt;Basisklasse*&gt; objects; // Liste mit Zeigern auf die Basisklasse
</code></pre>
<p>Warum Zeiger? Polymorphie funktioniert nur mit Zeigern <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>
<pre><code class="language-cpp">Basisklasse* obj1 = new A (); // ein A erstellen
Basisklasse* obj2 = new B (); // ein B erstellen

list.push_back(obj1); // beide ganz einfach hinzufügen
list.push_back(obj2);

list&lt;Basisklasse*&gt;::iterator iter = list.begin();
iter-&gt;doSmth(); // ruft nicht Basisklasse-&gt;doSmth auf sondern A-&gt;doSmth
// wichtig dabei ist, dass die funktionen brav virtual gemacht wurden
// wenn du dir sicher bist ein A in den händen zu haben kannst du auch casten:
A* a = dynamic_cast&lt;A*&gt;(*iter);

// da wir alle objekte mit new erstellt haben müssen wir sie auch wieder mit delete löschen:
list&lt;Basisklasse*&gt;::iterator iter = list.begin();
while(iter != list.end())
{
    delete *iter;
    ++iter;
}
</code></pre>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270321</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:38:50 GMT]]></title><description><![CDATA[<p>Danke für deine rasche Hilfe!<br />
Bei meiner Basisklasse handelt es sich um eine abstrakte Klasse(die wiederum von einer Klasse abgeleitet ist). Ich habs jetzt so gemacht wie du es oben geschrieben hast und ich bekomme keinen Fehler. Jedoch frag ich mich, leg ich bei<br />
Basisklasse* obj2 = new B ();<br />
nicht ein Objekt der abstrakten Klasse an(was ja nicht geht)?<br />
Und noch ne Frage: Wieso funktioniert Polymorphie nur mit Zeigern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270326</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Fri, 20 Apr 2007 22:45:14 GMT]]></title><description><![CDATA[<p>1. Welche Fehlermeldung erhältst du? Wir haben keine Kristallkugel im Einsatz <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="😉"
    /><br />
2. Nein, du sagst &quot;new B&quot;, nur ist B von Basisklasse abgeleitet und kann deshalb auch an eine Basisklasse zugewiesen werden (Edit: Was unmöglich wäre mit Objekten, nicht aber mit Zeigern, kannst auch Zeiger auf abstrakte Klassen haben)<br />
3. Liegt an der zugrundeliegenden Technik, erstmal die Technologie selber kennenlernen, dann in die Tiefe gehen <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>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270327</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 20 Apr 2007 22:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to list mit verschiednen Objekten on Sat, 21 Apr 2007 11:17:10 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Dann willst du Polymorphie einsetzen <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>
<pre><code class="language-cpp">list&lt;Basisklasse*&gt; objects; // Liste mit Zeigern auf die Basisklasse
</code></pre>
<p>Warum Zeiger? Polymorphie funktioniert nur mit Zeigern <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>
</blockquote>
<p>Stimmt ja gar nicht. Polymorphie funktioniert auch mit Referenzen <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="😉"
    /> (*scnr*) (der Grund liegt darin, daß ein Basis* oder Basis&amp; nicht unbedingt ein Basis-Objekt im Hintergrund liegen haben muß, sondern möglicherweise etwas, das von Basis abgeleitet ist - und dann werden die virtuellen Methoden anhand des dynamischen (aka tatsächlichen) Typs dieses Objekts ausgewählt).</p>
<p>PS: Der Grund, warum SideWinder's Konstruktion nur mit Zeigern funktioniert, ist ganz einfach: Referenzen lassen sich nicht kopieren und deshalb auch nicht als Container-Elemente verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270510</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 21 Apr 2007 11:17:10 GMT</pubDate></item></channel></rss>