<?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[std::stack - delete und pop in einem Zug]]></title><description><![CDATA[<p>Hallo miteinander,</p>
<p>ich nutze in meinem Programm einen Stack der Form <code>std::stack&lt;void *&gt;</code> . Nun bietet die Klasse keine Funktion um gleichzeitig das oberste Element vom Stack zu nehmen und gleichzeitig freizugeben, falls es denn ein Pointer ist. Gibt es eine Möglichkeit die Stack-Klasse zu erweitern mit einer Methode wie z.B.:</p>
<pre><code class="language-cpp">void freepop(std::stack&lt;void *&gt; *stack) {
    delete stack-&gt;top();
    stack-&gt;pop();
}
</code></pre>
<p>oder so in der Richtung? Sollte ich eine eigene Klasse schreiben, die von <code>std::stack</code> erbt und dann einfach die passende Methode einbinden? (JA ich weiß, dass die Methode failen würde, wenn der Stack dann keine Pointer als Elemente besitzt!)</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288257/std-stack-delete-und-pop-in-einem-zug</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 02:19:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288257.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Jun 2011 13:24:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::stack - delete und pop in einem Zug on Mon, 13 Jun 2011 13:24:55 GMT]]></title><description><![CDATA[<p>Hallo miteinander,</p>
<p>ich nutze in meinem Programm einen Stack der Form <code>std::stack&lt;void *&gt;</code> . Nun bietet die Klasse keine Funktion um gleichzeitig das oberste Element vom Stack zu nehmen und gleichzeitig freizugeben, falls es denn ein Pointer ist. Gibt es eine Möglichkeit die Stack-Klasse zu erweitern mit einer Methode wie z.B.:</p>
<pre><code class="language-cpp">void freepop(std::stack&lt;void *&gt; *stack) {
    delete stack-&gt;top();
    stack-&gt;pop();
}
</code></pre>
<p>oder so in der Richtung? Sollte ich eine eigene Klasse schreiben, die von <code>std::stack</code> erbt und dann einfach die passende Methode einbinden? (JA ich weiß, dass die Methode failen würde, wenn der Stack dann keine Pointer als Elemente besitzt!)</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077458</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 13 Jun 2011 13:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to std::stack - delete und pop in einem Zug on Mon, 13 Jun 2011 13:42:59 GMT]]></title><description><![CDATA[<p>Die Standardklassen sind <strong>nicht</strong> dafür ausgelegt, dass von ihnen geerbt wird, zumindest nicht wenn du das Ergebnis später über Basisklassenzeiger ansprechen möchtest.</p>
<p>Guck dir mal die Pointercontainer von boost an, die machen das was du willst.</p>
<p>Un überdenke nochmal dein Design. void* in C++ sind verdächtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077462</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 13 Jun 2011 13:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::stack - delete und pop in einem Zug on Mon, 13 Jun 2011 14:41:09 GMT]]></title><description><![CDATA[<p>Christian Ivicevic schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void freepop(std::stack&lt;void *&gt; *stack) {
    delete stack-&gt;top();
    stack-&gt;pop();
}
</code></pre>
</blockquote>
<p>Ja, genau so als freie Methode. Ja nicht von <code>std::stack</code> erben.</p>
<p>Aber <code>void*</code> deleten ist undefiniertes Verhalten. Nimm typisierte oder noch besser gar keine Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077509</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 13 Jun 2011 14:41:09 GMT</pubDate></item><item><title><![CDATA[Reply to std::stack - delete und pop in einem Zug on Mon, 13 Jun 2011 16:51:00 GMT]]></title><description><![CDATA[<p>oder wenn zeiger dann smarte zeiger...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077569</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 13 Jun 2011 16:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::stack - delete und pop in einem Zug on Tue, 14 Jun 2011 12:49:39 GMT]]></title><description><![CDATA[<p>Oder Du speicherst einen passenden deleter mit im Stack.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077962</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 14 Jun 2011 12:49:39 GMT</pubDate></item></channel></rss>