<?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 und abstrakte klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>angenommen ich habe eine abstrakte Klasse Kunde und zwei davon abgeleitete (nicht abstrakte) Klassen Privatkunde und Firmenkunde.</p>
<p>Jetzt möchte ich eine Liste mit Objekten beider (Privat- und Firmen-) Kunden anlegen. Ist dies mit &quot;list&quot; aus der Standardbibliothek möglich.</p>
<p>Definiere ich</p>
<pre><code class="language-cpp">list&lt;Kunde&gt; liste
</code></pre>
<p>bekomme ich folgende Fehlermeldung: error C2259: 'Kunde': Instanz von abstrakter Klasse kann nicht erstellt werden</p>
<p>Dieser Fehler tritt in der list.h auf...</p>
<p>Wie gehe ich hier vor?</p>
<p>Danke für Tipps</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126344/list-und-abstrakte-klassen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 18:53:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126344.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Nov 2005 14:21:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 14:21:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>angenommen ich habe eine abstrakte Klasse Kunde und zwei davon abgeleitete (nicht abstrakte) Klassen Privatkunde und Firmenkunde.</p>
<p>Jetzt möchte ich eine Liste mit Objekten beider (Privat- und Firmen-) Kunden anlegen. Ist dies mit &quot;list&quot; aus der Standardbibliothek möglich.</p>
<p>Definiere ich</p>
<pre><code class="language-cpp">list&lt;Kunde&gt; liste
</code></pre>
<p>bekomme ich folgende Fehlermeldung: error C2259: 'Kunde': Instanz von abstrakter Klasse kann nicht erstellt werden</p>
<p>Dieser Fehler tritt in der list.h auf...</p>
<p>Wie gehe ich hier vor?</p>
<p>Danke für Tipps</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917423</guid><dc:creator><![CDATA[Dieter33]]></dc:creator><pubDate>Mon, 14 Nov 2005 14:21:22 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 14:28:33 GMT]]></title><description><![CDATA[<p>In dem Fall mußt du dir in der Liste Pointer halten und nicht die Objekte selbst. Anders gehts nicht.</p>
<pre><code class="language-cpp">list &lt;Kunde *&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/917432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917432</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Mon, 14 Nov 2005 14:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 14:42:57 GMT]]></title><description><![CDATA[<p>Vielen Dank, funktioniert <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/917447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917447</guid><dc:creator><![CDATA[Dieter33]]></dc:creator><pubDate>Mon, 14 Nov 2005 14:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 14:46:38 GMT]]></title><description><![CDATA[<p>Mathias schrieb:</p>
<blockquote>
<p>In dem Fall mußt du dir in der Liste Pointer halten und nicht die Objekte selbst. Anders gehts nicht.</p>
<pre><code class="language-cpp">list &lt;Kunde *&gt;
</code></pre>
</blockquote>
<p>Referenzen gehen auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917450</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 14 Nov 2005 14:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 14:53:00 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Referenzen gehen auch.</p>
</blockquote>
<p>Auch auto_ptr &quot;gehen&quot;. Erzeugen aber absolut sinnloses verhalten. Die Requirements (Assignable) sind einfach nicht erfüllt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917454</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Mon, 14 Nov 2005 14:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 16:12:50 GMT]]></title><description><![CDATA[<p>referenzen gehen garnet. spätestens beim auslesen kracht es(wenn nicht schon vorher), weil list dann versucht, ne referenz auf ne referenz zu erstellen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917489</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 14 Nov 2005 16:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 21:20:55 GMT]]></title><description><![CDATA[<p>hallo ich hatte die gleiche idee wie dieter33,</p>
<p>in einer liste sollten sich spezialisierte objekte befinden, die alle eine gemeinsame basisklasse haben. (zb. firmenkunden : kunde, privatkunden : kunde) . beschreibe ich die liste so : list&lt;kunde&gt; und uebergebe der funktion &quot;add(kunde&amp; ein_kunde)&quot; eine referenz, dann macht die stl wohl standardmaessig aus einem privatkunden einen kunden , da sie nur die daten fuer kunde kopiert (stl legt ja immer eine const objektkopie an). dann allerdings bleibt der Polymorphismus auf der strecke. ab dann steht mir nur noch ein objekt vom typ kunde zur verfügung.</p>
<p>die impl. mit zeigern klappt tadellos, aber die objekte lassen sich nicht mehr mit der std:sort sortieren, da diese ja referenzen auf ein objekt verlangt.</p>
<p>wie kann ich nun in eine list&lt;kunde&gt; anlegen, wobei sich die objekte in ihrer genauen auspraegung erst zur laufzeit ergeben, diese sortiert halten und dann anschliessend die virtuellen methoden darauf ausführen?</p>
<p>danke für eure hardcore-minds schon mal im voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917897</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Mon, 14 Nov 2005 21:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 21:54:39 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Referenzen gehen auch.</p>
</blockquote>
<p>Auch auto_ptr &quot;gehen&quot;. Erzeugen aber absolut sinnloses verhalten. Die Requirements (Assignable) sind einfach nicht erfüllt.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> auto_ptr gehen, ausser daß sie nicht gehen, ansonsten gehen sie oder wie war das gemeint?</p>
<p>Also Smart-pointer gehen. Gibt es leider noch nicht in der Standardbibliothek.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917973</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 14 Nov 2005 21:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 22:07:00 GMT]]></title><description><![CDATA[<p>ichbinsnochmal schrieb:</p>
<blockquote>
<p>hallo ich hatte die gleiche idee wie dieter33,</p>
<p>in einer liste sollten sich spezialisierte objekte befinden, die alle eine gemeinsame basisklasse haben. (zb. firmenkunden : kunde, privatkunden : kunde) . beschreibe ich die liste so : list&lt;kunde&gt; und uebergebe der funktion &quot;add(kunde&amp; ein_kunde)&quot; eine referenz, dann macht die stl wohl standardmaessig aus einem privatkunden einen kunden , da sie nur die daten fuer kunde kopiert (stl legt ja immer eine const objektkopie an). dann allerdings bleibt der Polymorphismus auf der strecke. ab dann steht mir nur noch ein objekt vom typ kunde zur verfügung.</p>
<p>die impl. mit zeigern klappt tadellos, aber die objekte lassen sich nicht mehr mit der std:sort sortieren, da diese ja referenzen auf ein objekt verlangt.</p>
<p>wie kann ich nun in eine list&lt;kunde&gt; anlegen, wobei sich die objekte in ihrer genauen auspraegung erst zur laufzeit ergeben, diese sortiert halten und dann anschliessend die virtuellen methoden darauf ausführen?</p>
<p>danke für eure hardcore-minds schon mal im voraus...</p>
</blockquote>
<p>du kannst ganz normal mit containern von pointer arbeiten, und musst dann lediglich ein selbstgeschriebenes prädikat an die sortierfunktion geben (less würde ja die pointer vergleichen). bequemer (syntaktisch, da die doppelte indirektion in die iteratoren eingebaut ist) und sicherer sind boosts pointer-container - die ganz nebenbei auch über ein einheitlicheres interface verfügen, so dass sie leichter untereinander austauschbar sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/917997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/917997</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 14 Nov 2005 22:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Mon, 14 Nov 2005 22:33:36 GMT]]></title><description><![CDATA[<p>hm...mir sagt selbstgeschriebenes prädikat grad nichts...was meint das? *sonst muss ich morgen mal googlen *</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918017</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Mon, 14 Nov 2005 22:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 00:18:19 GMT]]></title><description><![CDATA[<p>std::list hat keine Prädikate. std::set, std::multiset, std::map und std::multimap haben eins. Und selbst da spricht nichts dagegen, Pointer zu vergleichen. Auch da sind keine selbstgeschriebenen Prädikate notwendig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918067</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Tue, 15 Nov 2005 00:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 09:39:58 GMT]]></title><description><![CDATA[<p>das dachte ich bisher auch und habe mir ein set mit pointern gebastelt. jedoch wird das set nicht sortiert gehalten, da std::set nur mit const Object&amp; diese funktion erfuellen kann, wenn der operator&lt; ueberladen wurde. mit referenzen auf objekte geht das ja auch wunderbar, jedoch fuehrt es zu den oben genannten problem, das der polymorphismus nicht mehr funktioniert. also sind zeiger noetig dachte ich mir und siehe da es funktioniert auch mit den zeigern tadellos, bis auf das set die hinzugefuegten objekte nicht sortiert haelt, da es lediglich die zeiger sortiert haelt! frage: wie sieht eine moegliche sortierung eines sets aus, wenn es als std::set&lt;Kunden*&gt; definiert ist<br />
und mit<br />
mySet.insert(new FirmenKunde()) bzw. mySet.insert(new PrivatKunde()) gefuellt werden soll und anschliessend ein Zeiger aus dem Set geholt und<br />
pKundenZeiger-&gt;ausgeben() aufgerufen werden soll , wobei gilt</p>
<pre><code class="language-cpp">virtual void FirmenKunde::ausgeben()
virtual void PrivatKunde::ausgeben()
</code></pre>
<p>mein operator&lt; lautet:</p>
<pre><code class="language-cpp">int Kunde::operator&lt;(Kunde* pKunde)
{
return mName &lt; pKunde-&gt;mName;
}
</code></pre>
<p>allerdings wird der nie aufgerufen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918255</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Tue, 15 Nov 2005 09:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 09:45:56 GMT]]></title><description><![CDATA[<p>Du mußt dir schon ein eigenes Vergleichsprädikat für Pointer schreiben und dem Set bekanntgeben:</p>
<pre><code class="language-cpp">bool lower_pkunde(Kunde* l,Kunde* r)
{ return *l&lt;*r; }

map&lt;Kunde*,lower_pkunde&gt; my_map;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/918264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918264</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 15 Nov 2005 09:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 10:46:37 GMT]]></title><description><![CDATA[<p>hm, nach praedikaten habe ich schon gegoogelt...allerding verwirrt mich der ausdruck map etwas.</p>
<p>was meint ein vergleichspraedikat fuer pointer erstellen und dieses dem set bekanntgeben genau.. (das sagt mir leider nicht allzuviel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918335</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 11:14:58 GMT]]></title><description><![CDATA[<p>ichbinsnochmal schrieb:</p>
<blockquote>
<p>hm, nach praedikaten habe ich schon gegoogelt...allerding verwirrt mich der ausdruck map etwas.</p>
<p>was meint ein vergleichspraedikat fuer pointer erstellen und dieses dem set bekanntgeben genau.. (das sagt mir leider nicht allzuviel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> )</p>
</blockquote>
<p>Du kannst seinem Set beim Initialisieren ein Funktionsobjekt mitgeben dass er zum Vergleichen zweier Einträge in die Liste verwendet. Du musst ein solches Objekt definieren, dass als Parameter zwei Pointer auf die von dir verwendete Klasse und deinen Bedürfnissen zuschneiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918354</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Tue, 15 Nov 2005 11:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 11:20:46 GMT]]></title><description><![CDATA[<p>ichbinsnochmal schrieb:</p>
<blockquote>
<p>hm, nach praedikaten habe ich schon gegoogelt...allerding verwirrt mich der ausdruck map etwas.</p>
</blockquote>
<p>Sorry, mein Fehler - das da oben sollte &quot;set&lt;Kunde*,lower_pkunde&gt;&quot; heißen.</p>
<blockquote>
<p>was meint ein vergleichspraedikat fuer pointer erstellen und dieses dem set bekanntgeben genau.. (das sagt mir leider nicht allzuviel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> )</p>
</blockquote>
<p>Das heißt, du benötigst eine Funktion, die zwei Kunde* Pointer auf größer vergleichen kann. Da man Operatoren nicht für Pointer überladen kann, brauchst du eine &quot;normale&quot; Funktion - dort oben ist das &quot;lower_pkunde&quot;.<br />
Anschließend kannst du der set mitteilen, daß sie statt op&lt;() deine Vergleichsfunktion verwenden soll, um Schlüssel zu vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918362</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Nov 2005 11:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 12:28:16 GMT]]></title><description><![CDATA[<p>ok, ich glaub zumindest theoretisch weiss ich jetzt bescheid .<br />
hier folgender code, der nicht kompliliert, aber so habe ich das bis jetzt verstanden...wo ist der haken?</p>
<pre><code class="language-cpp">...

#include &quot;property.h&quot;

using namespace std;
#include &lt;vector&gt;
#include &lt;set&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

#include &lt;iostream&gt;

class PropertyCollection {
  public:
    PropertyCollection (  );
    virtual ~PropertyCollection (  );

    bool addElement(Property* property);
    //bool addElement(Property&amp; property);

    AbstractProperty* first();
    AbstractProperty* next();

    inline int lowerProperty(Property* p1, Property* p2)
    {
                return p1-&gt;mName &lt; p2-&gt;mName;
    }

36:     set&lt;Property*, lowerProperty&gt; mSet;
        set&lt;Property*, lowerProperty&gt;::iterator it;

};

#endif
</code></pre>
<p>Fehlermeldung:<br />
propertycollection.h:36: template argument 2 is invalid<br />
propertycollection.h:36: ISO C++ forbids declaration of <code>mSet' with no type propertycollection.h:37: invalid use of undefined type</code>class<br />
PropertyCollection'</p>
<p>der eintrag 36: ist nur zur orientierung</p>
<p>? muss lowerProperty(..) in die Klasse Property oder PropertyCollection?<br />
? wie sieht die deklaration fuer den iterator aus?<br />
? wie rufe ich sort auf? sort(mSet.begin(), mSet.end(), lowerProperty) ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918436</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Tue, 15 Nov 2005 12:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 12:36:09 GMT]]></title><description><![CDATA[<p>ichbinsnochmal schrieb:</p>
<blockquote>
<p>? muss lowerProperty(..) in die Klasse Property oder PropertyCollection?</p>
</blockquote>
<p>entweder als globale Funktion oder in die PropertyCollection (in letztem Fall jedoch <strong>static</strong> - normale Member erwarten einen zusätzlichen this-Parameter, der für die set&lt;&gt; zu viel ist)</p>
<blockquote>
<p>? wie sieht die deklaration fuer den iterator aus?</p>
</blockquote>
<p>Die sieht so richtig aus, wie du es geschrieben hast.</p>
<blockquote>
<p>? wie rufe ich sort auf? sort(mSet.begin(), mSet.end(), lowerProperty) ??</p>
</blockquote>
<p>Eine set&lt;&gt; brauchst du nicht zu sortieren, die hält die Elemente von sich aus in sortierter Reihenfolge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918453</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 15 Nov 2005 12:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 13:56:35 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Auch auto_ptr &quot;gehen&quot;. Erzeugen aber absolut sinnloses verhalten. Die Requirements (Assignable) sind einfach nicht erfüllt.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> auto_ptr gehen, ausser daß sie nicht gehen, ansonsten gehen sie oder wie war das gemeint?</p>
<p>Also Smart-pointer gehen. Gibt es leider noch nicht in der Standardbibliothek.</p>
</blockquote>
<p>Ist auto_ptr etwa kein Smartpointer? Smartpointer heißt nicht &quot;referenzgezählt und tiefe Kopie&quot;. auto_ptr können syntakisch korrekt mit einem Container verwendet werden. Deshalb gehen sie. Semantisch ist es aber völliger Schwachsinn, da bei Zuweisung eine Besitzübertragung und keine Kopie stattfinden. Deshalb gehen sie doch nicht, obwohl sie anscheinend gehen. Geht das so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918499</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Tue, 15 Nov 2005 13:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 18:42:45 GMT]]></title><description><![CDATA[<p>Also wenn die Liste auch die Verwaltung der Objekte übernimmt, sprich ihr einziger Aufbewahrungsort ist, so sollte man vielleicht <a href="http://boost.org/libs/ptr_container/doc/ptr_container.html" rel="nofollow">das</a> in Betracht ziehen. Dann müssten auch die STL Algorithmen und Prädikate auf Anhieb funktionieren und man spart sich die unübersichtliche zweite Dereferenzierung eines Iterators.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918568</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 15 Nov 2005 18:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Tue, 15 Nov 2005 23:37:02 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>auto_ptr können syntakisch korrekt mit einem Container verwendet werden. Deshalb gehen sie.</p>
</blockquote>
<p>Nope. Standard-konforme auto_ptr können nicht zusammen mit Standard-konformen Containern verwendet werden, da die Signatur des Copy-Ctors dies nicht erlaubt.</p>
<p>Nun gibt es aber Libraries die die Instanziierung eines Containers mit einem auto_ptr doch erlauben. In diesem Fall trifft dann aber der Teil mit dem &quot;semantischen Schwachsinn&quot; zu. Es sei denn natürlich man hat eine nicht-konforme auto_ptr-Implementation wie z.B. dies des VC 6. Hier ist es sogar semantisch ok. Dafür dann aber &quot;Portabilitätsblödsinn&quot;.</p>
<p>Oder kurz: Never create containers of auto_ptrs (Scott Meyers: Effective STL - Item 8).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918761</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Tue, 15 Nov 2005 23:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Wed, 16 Nov 2005 08:18:29 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Nope. Standard-konforme auto_ptr können nicht zusammen mit Standard-konformen Containern verwendet werden, da die Signatur des Copy-Ctors dies nicht erlaubt.</p>
</blockquote>
<p>Hmm..<br />
auto_ptr( auto_ptr&amp;);</p>
<p>okay das erfüllt nicht die CopyConstructible Requirements, da T(t) != t ist und die const-Variante fehlt.<br />
Und sollte beim Einfügen Ärger machen, da const T&amp; reinkommen.</p>
<p>Und wieder was dazugelernt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/918853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918853</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 16 Nov 2005 08:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Wed, 16 Nov 2005 17:45:33 GMT]]></title><description><![CDATA[<p>so jetzt hab ichs..</p>
<p>anscheinend reicht ihm die inline funktion nicht aus, sondern er erwartet ein funktionsobject und beklagt sich, dass er dies nicht finden kann.<br />
deshalb habe<br />
ich die inline entfernt und eine neue funktion nun als</p>
<pre><code class="language-cpp">struct lowerProperty{

//funktionsoperator ueberladen
        bool operator() (Property* prop1,  Property* prop2)
	{
                return prop1-&gt;mName &lt; prop2-&gt;mName;
	}

};
</code></pre>
<p>vor der class PropertyCollection gesetzt.<br />
dann klappt alles wunderbar.</p>
<p>danke fuer eure hilfe!!! und sonst so? hat jemand einen einwand gegen diese loesung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919387</guid><dc:creator><![CDATA[ichbinsnochmal]]></dc:creator><pubDate>Wed, 16 Nov 2005 17:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to list und abstrakte klassen on Wed, 16 Nov 2005 18:32:13 GMT]]></title><description><![CDATA[<p>eine member function ist niemals ein prädikat (wegen des impliziten objektparameters).</p>
<p>dein operator() muss im übrigen const sein, andernfalls wirst du preobleme erhalten, wenn du const member fuktionen, die diesen funktor benötigen, instanziieren willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919432</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Nov 2005 18:32:13 GMT</pubDate></item></channel></rss>