<?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[ist das sinnvoll?]]></title><description><![CDATA[<p>sry wegen dem titel aber ich wusste wirklich nicht wie ich es sonst nennen sollte</p>
<p>naja also ist das fuer euch sinnvoll?</p>
<pre><code class="language-cpp">template&lt;class T&gt;
	class Formulastack : public stack&lt;T, deque&lt;T&gt; &gt;
	{
	public:
		Formulastack() : stack&lt;T&gt;()
		{
			_t = new char[sizeof(T)];
		}
		~Formulastack() { delete _t; }

		T get()
		{
			_t = &amp;top();
			pop();

			return *_t;
		}
	private:
		T *_t;
	};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/123609/ist-das-sinnvoll</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 19:16:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123609.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Oct 2005 12:36:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 12:36:04 GMT]]></title><description><![CDATA[<p>sry wegen dem titel aber ich wusste wirklich nicht wie ich es sonst nennen sollte</p>
<p>naja also ist das fuer euch sinnvoll?</p>
<pre><code class="language-cpp">template&lt;class T&gt;
	class Formulastack : public stack&lt;T, deque&lt;T&gt; &gt;
	{
	public:
		Formulastack() : stack&lt;T&gt;()
		{
			_t = new char[sizeof(T)];
		}
		~Formulastack() { delete _t; }

		T get()
		{
			_t = &amp;top();
			pop();

			return *_t;
		}
	private:
		T *_t;
	};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/895076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895076</guid><dc:creator><![CDATA[leo aka qsch]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 12:41:26 GMT]]></title><description><![CDATA[<p>nein, das ist nicht sinnvoll - der stl::stack speichert seine eigenen Daten in einer internen Datenstruktur (deque), da brauchst du nicht noch Daten parallel dazu festzuhalten (davon abgesehen, daß new char[sizeof(T)] grauenhaft ist).</p>
<p>Wenn es dir nur darum geht, für pop() einen Rückgabewert zu erhalten, empfehle ich eher so was:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T get_pop(stack&lt;T&gt;&amp; s)
{
  T ret = s.top();
  s.pop();
  return ret;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/895087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895087</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 12:44:38 GMT]]></title><description><![CDATA[<p>ok stimmt danke, naja war mal wieder nicht so eine geistreiche idee von mir..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895094</guid><dc:creator><![CDATA[leo aka qsch]]></dc:creator><pubDate>Tue, 18 Oct 2005 12:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 13:26:56 GMT]]></title><description><![CDATA[<p>Die meisten STL-Klassen (speziell die Container) sind nicht dafür designt, von ihnen abzuleiten!</p>
<p>Was Du willst, kannst Du alles mit Komposition erreichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895133</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Tue, 18 Oct 2005 13:26:56 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 14:30:40 GMT]]></title><description><![CDATA[<p>Jaaa nieder mit den Verbungen, nur noch Kompositionen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/895195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895195</guid><dc:creator><![CDATA[spjoe]]></dc:creator><pubDate>Tue, 18 Oct 2005 14:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Tue, 18 Oct 2005 20:42:36 GMT]]></title><description><![CDATA[<p>es ist icht nur wenig sinvoll sondern auch fehlerhaft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
da du _t mit <em>new char[sizeof(T)]</em> initialisierst anstatt mit <em>new T</em> zeigt _t nicht auf ein objekt vom typ T sondern auf uninitialisierten speicher. wenn du nun <em>delete _t</em> aufrufst, dann wird es, wenn du pech hast, krachen. auch eine zuweisung an _t funktioniert dann nicht. solange du für T nur einfache datentypen wie <em>int</em> etc verwendest, deren konstruktoren und destruktoren nichts tun, fällt der fehler aber nicht auf.</p>
<p>und wenn du jetzt denkst &quot;ach, da der fehler nicht auffällt, ist es ja nicht schlimm&quot;, dann hast du weit gefehlt. dann ist er nämlich eine tickende zeitbombe und damit besonders schlimm. du verwendest irgendwann einmal nichts ahnend dein selbstgeschriebenes template mit einem datentyp, der im konstruktor/destruktor tatsächlich mal was tut, und peng! anschließend kannst du dich beim debugging verzweifelt durch megabytes von quelltext quälen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/895573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895573</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Tue, 18 Oct 2005 20:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Wed, 19 Oct 2005 08:15:19 GMT]]></title><description><![CDATA[<p>Ja, das Problem der Speicherverwaltung kommt auch noch dazu. Und außerdem würde _t nach dem ersten Aufruf von get() schon nicht mehr auf den im Konstruktor angelegten Speicher zeigen (der damit heimatlos im Heap zurückbleibt), sondern auf einen Datenbereich, der gerade vom untendrunterliegenden Stack als &quot;unbelegt&quot; gekennzeichnet wurde (wenn du Glück hast, sind die Daten noch gültig, wenn du Pech hast, wurde der Speicherbereich auch physikalisch freigegeben).<br />
Und spätestens am Programmende wendest du zweimal delete auf den selben Speicherbereich an (einmal im std::stack-Destruktor, der seine Daten aufräumt, einmal in deinem Destruktor, der inzwischen irgendwo in die stack-Daten zielt) - und dann crasht es gewaltig.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8929">@spjoe</a>: Verrerbungen sind mitunter nützlich. Nur sollte man wissen, wo man sie einsetzen kann. Und die STL-Klassen sind wie oben gesagt nicht dafür entwickelt, daß man etwas davon ableiten kann (Stichwort: virtueller Destruktor).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/895863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/895863</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 19 Oct 2005 08:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to ist das sinnvoll? on Wed, 19 Oct 2005 21:10:02 GMT]]></title><description><![CDATA[<p>stimmt. &amp;top() ist natürlich auch noch murks <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>@<strong>leo aka qsch</strong><br />
aber nur nicht entmutigen lassen! bis weihnachten wird das bestimmt noch was. da mußt du als anfänger durch :D:D:D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896598</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Wed, 19 Oct 2005 21:10:02 GMT</pubDate></item></channel></rss>