<?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[QList aus abgeleiteten,komplexen Objekten]]></title><description><![CDATA[<p>Hi,<br />
ich hab ein Problem mit einer Art vektor (konkret QList). Ich will nämlich Objekte in die Liste stecken,welche komplex sind; es werden dem Konstruktor also Parameter übergeben. Mein Code sieht bisher so aus:</p>
<pre><code class="language-cpp">QList&lt;Klasse&gt; list;
Klasse item(...);
list.append(item);
</code></pre>
<p>Das funktioniert nun leider nicht. Das scheint daran zu liegen das die Klasse abgeleitet ist. Warum das ein Problem darstellt weiß ich nicht. Jedenfalls wird ein ziemlich komplexer Fehlercode ausgegeben.<br />
Die wichtigsten Fehlereldngen sind glaube ich, dass der Konstruktor und der operator= der Basisklasse private sind. Ich komm jedenfalls ohne Hilfe nicht weiter. Ich hoffe ihr könnt mit der Beschreibung etwas anfangen, ansonsten muss ich wohl den ganzen Fehlercode posten. Wäre nett wenn mir jemand weiterhelfen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304590/qlist-aus-abgeleiteten-komplexen-objekten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 11:06:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304590.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Jun 2012 22:28:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to QList aus abgeleiteten,komplexen Objekten on Sat, 09 Jun 2012 22:28:41 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hab ein Problem mit einer Art vektor (konkret QList). Ich will nämlich Objekte in die Liste stecken,welche komplex sind; es werden dem Konstruktor also Parameter übergeben. Mein Code sieht bisher so aus:</p>
<pre><code class="language-cpp">QList&lt;Klasse&gt; list;
Klasse item(...);
list.append(item);
</code></pre>
<p>Das funktioniert nun leider nicht. Das scheint daran zu liegen das die Klasse abgeleitet ist. Warum das ein Problem darstellt weiß ich nicht. Jedenfalls wird ein ziemlich komplexer Fehlercode ausgegeben.<br />
Die wichtigsten Fehlereldngen sind glaube ich, dass der Konstruktor und der operator= der Basisklasse private sind. Ich komm jedenfalls ohne Hilfe nicht weiter. Ich hoffe ihr könnt mit der Beschreibung etwas anfangen, ansonsten muss ich wohl den ganzen Fehlercode posten. Wäre nett wenn mir jemand weiterhelfen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221541</guid><dc:creator><![CDATA[Freeloader]]></dc:creator><pubDate>Sat, 09 Jun 2012 22:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to QList aus abgeleiteten,komplexen Objekten on Sat, 09 Jun 2012 22:44:34 GMT]]></title><description><![CDATA[<p><code>QList</code> speichert, wie die meisten C++ Container, Kopien von Objekten.<br />
D.h. sie müssen auch kopierbar sein. D.h. der Copy-Konstruktor muss public sein.</p>
<p>Warum es eine Fehlermeldung bezüglich <code>operator=</code> gibt, weiss ich nicht. mMn. dürfte <code>QList</code> den nicht brauchen.</p>
<p>Und nochwas: da <code>QList</code> Kopien speichert, funktioniert folgendes sowieso NICHT:</p>
<pre><code class="language-cpp">QList&lt;Basisklasse&gt; list;
list.append(AbgeleiteteKlasse(1, 2, 3));
</code></pre>
<p>Bzw. es funktioniert oft genug schon (in dem Sinn dass es compilierbar und ausführbar ist), aber in der Liste befindet sich dann trotzdem nur ein Objekt vom Typ <code>Basisklasse</code> . Was da passiert nennt sich &quot;slicing&quot; - unter dem Begriff findest du auch genug Material zu dem Thema falls du mehr dazu lesen willst.</p>
<p>Wenn du polymorphe Objekte speichern willst, dann musst du entweder normale Container mit Smart-Pointern kombinieren, oder aber spezielle Container verwenden die das erlauben (z.B. Boost Pointer-Container).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221543</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 09 Jun 2012 22:44:34 GMT</pubDate></item></channel></rss>