<?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[dynamisches Objekt in Liste löschen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich lege mehrer Dynamische Objekte in einer Liste an:</p>
<pre><code class="language-cpp">list &lt;Item*&gt; itemliste;
</code></pre>
<p>Nun möchte ich gerne einige dieser dynamisches Objekte löschen.<br />
Wie kann ich dies am Besten machen?</p>
<pre><code class="language-cpp">if (item_exist(input) == true)
	{

		//itemliste.erase();

		cout &lt;&lt; &quot;Gegenstand entfernt!&quot; &lt;&lt; endl;
	}
	else
	{
		cout &lt;&lt; &quot;Kein Gegenstand entfernt!&quot; &lt;&lt; endl;
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/244263/dynamisches-objekt-in-liste-löschen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 12:15:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244263.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Jun 2009 16:50:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamisches Objekt in Liste löschen on Sat, 27 Jun 2009 16:50:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich lege mehrer Dynamische Objekte in einer Liste an:</p>
<pre><code class="language-cpp">list &lt;Item*&gt; itemliste;
</code></pre>
<p>Nun möchte ich gerne einige dieser dynamisches Objekte löschen.<br />
Wie kann ich dies am Besten machen?</p>
<pre><code class="language-cpp">if (item_exist(input) == true)
	{

		//itemliste.erase();

		cout &lt;&lt; &quot;Gegenstand entfernt!&quot; &lt;&lt; endl;
	}
	else
	{
		cout &lt;&lt; &quot;Kein Gegenstand entfernt!&quot; &lt;&lt; endl;
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1733772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733772</guid><dc:creator><![CDATA[Krikus]]></dc:creator><pubDate>Sat, 27 Jun 2009 16:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches Objekt in Liste löschen on Sat, 27 Jun 2009 16:54:16 GMT]]></title><description><![CDATA[<p>Musst du wirklich ein <code>Item*</code> statt <code>Item</code> haben? Damit verlierst du nämlich einen Grossteil der Vorteile von Containern (automatische Speicherverwaltung).</p>
<p>Falls du Zeiger brauchst und aus einem Grund nicht auf entsprechende Alternativen wie Boosts Pointer-Container ausweichen willst, kannst du das so machen:</p>
<pre><code class="language-cpp">std::list&lt;Item*&gt;::iterator iter; // dein zu löschendes Element

delete *iter;
itemliste.erase(iter);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1733774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733774</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 27 Jun 2009 16:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches Objekt in Liste löschen on Sat, 27 Jun 2009 16:54:33 GMT]]></title><description><![CDATA[<p>Zuerst holst du dir den Iterator auf das Element, was du löschen willst. Dann zerstörst du das Objekt (ich nehme mal an, dass du dynamisch new meinst) und dann löscht du das Objekt mit erase.</p>
<p>Überlege dir aber, ob es nötig ist überhaupt dynamisch Speichern anzufordern, oder es reicht die Items per Kopie in den Container zu werfen. Dann reicht ein erase.</p>
<pre><code class="language-cpp">list &lt;Item&gt; itemliste;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1733775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733775</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 27 Jun 2009 16:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches Objekt in Liste löschen on Sat, 27 Jun 2009 17:03:15 GMT]]></title><description><![CDATA[<p>DIe Klasse Item ist eine Basisklasse mit 3 Subklasse.<br />
Daher die Sache mit den Zeigern.</p>
<p>Würde es so funktionieren?<br />
Kann z.Z noch nicht testen. muss zuvor noch ein anderes Problem beseitigen.</p>
<pre><code class="language-cpp">list&lt;Item*&gt;::iterator iter; // dein zu löschendes Element

		for (iter = itemliste.begin(); iter != itemliste.end(); iter++) 
		{
			if((*iter)-&gt;get_name() == input)
			{
				delete *iter;
				itemliste.erase(iter);
			}
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1733778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733778</guid><dc:creator><![CDATA[Krikus]]></dc:creator><pubDate>Sat, 27 Jun 2009 17:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches Objekt in Liste löschen on Sat, 27 Jun 2009 17:10:12 GMT]]></title><description><![CDATA[<p>Nicht ganz.</p>
<p>So:</p>
<pre><code class="language-cpp">for (iter = itemliste.begin(); iter != itemliste.end();)
        {
            if((*iter)-&gt;get_name() == input)
            {
                delete *iter;
                iter = itemliste.erase(iter);
            }
            else
                ++iter;
        }
</code></pre>
<p>Weil erase das Element ja löscht und den iterator ungültig macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733780</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 27 Jun 2009 17:10:12 GMT</pubDate></item></channel></rss>