<?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[Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt?]]></title><description><![CDATA[<p>Bei der Benutzung von C APIs in C++ brauche ich manchmal Hilfsklassen die nur im Konstruktor einen Zeiger speichern und im Destruktor diesen mit einer speziellen Funktion wieder freigeben um den Code exceptionsicher zu halten.</p>
<p>Ein Beispiel:</p>
<pre><code class="language-cpp">char* pEnvironmentStrings = GetEnvironmentStrings();
X x(pEnvironmentStrings); // soll dafür sorgen das in jedem Fall FreeEnvironmentStrings aufgerufen wird
// etwas mit pEnvironmentStrings machen
</code></pre>
<p>Die Klasse X soll jetzt so aussehen:</p>
<pre><code class="language-cpp">class X
{
public:
	X(char* pEnvironmentStrings)
		: pEnvironmentStrings_(pEnvironmentStrings)
	{
	}

	~X()
	{
		FreeEnvironmentStrings(pEnvironmentStrings_);
	}
private:
	char* pEnvironmentStrings_;
};
</code></pre>
<p>Mein Problem liegt jetzt nur in der Namensgebung. Wie soll man eine solche Hilfsklasse nennen?</p>
<p>~(Wenn man bei boost::scoped_ptr einen Custom Deleter angeben könnte, würde ich wahrscheinlich den nehmen, aber das wird nur von boost::shared_ptr unterstützt.)~</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161172/wie-nennt-man-eine-klasse-die-im-konstruktor-einen-pointer-speichert-und-ihn-im-destruktor-freigibt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 18:09:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161172.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Oct 2006 08:24:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 08:24:07 GMT]]></title><description><![CDATA[<p>Bei der Benutzung von C APIs in C++ brauche ich manchmal Hilfsklassen die nur im Konstruktor einen Zeiger speichern und im Destruktor diesen mit einer speziellen Funktion wieder freigeben um den Code exceptionsicher zu halten.</p>
<p>Ein Beispiel:</p>
<pre><code class="language-cpp">char* pEnvironmentStrings = GetEnvironmentStrings();
X x(pEnvironmentStrings); // soll dafür sorgen das in jedem Fall FreeEnvironmentStrings aufgerufen wird
// etwas mit pEnvironmentStrings machen
</code></pre>
<p>Die Klasse X soll jetzt so aussehen:</p>
<pre><code class="language-cpp">class X
{
public:
	X(char* pEnvironmentStrings)
		: pEnvironmentStrings_(pEnvironmentStrings)
	{
	}

	~X()
	{
		FreeEnvironmentStrings(pEnvironmentStrings_);
	}
private:
	char* pEnvironmentStrings_;
};
</code></pre>
<p>Mein Problem liegt jetzt nur in der Namensgebung. Wie soll man eine solche Hilfsklasse nennen?</p>
<p>~(Wenn man bei boost::scoped_ptr einen Custom Deleter angeben könnte, würde ich wahrscheinlich den nehmen, aber das wird nur von boost::shared_ptr unterstützt.)~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149043</guid><dc:creator><![CDATA[dun]]></dc:creator><pubDate>Wed, 04 Oct 2006 08:24:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 08:29:33 GMT]]></title><description><![CDATA[<p>Ich weiß nicht, ob's einen Standard-Namen dafür gibt, aber &quot;Auto-Pointer&quot; trifft das Verhalten recht gut.</p>
<p>(btw solltest du dein Design noch etwas verbessern, indem du auch die Speicheranforderung im Konstruktor deiner Klasse erledigst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149045</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Oct 2006 08:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 08:32:20 GMT]]></title><description><![CDATA[<p>Könnt ein unvollständiger Smartpointer sein! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149047</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 04 Oct 2006 08:32:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 08:58:15 GMT]]></title><description><![CDATA[<p>Stroustrup spricht hierbei von RAII (resource acquisition is initialization).<br />
s.a. <a href="http://de.wikipedia.org/wiki/RAII" rel="nofollow">http://de.wikipedia.org/wiki/RAII</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149065</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 04 Oct 2006 08:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 09:22:42 GMT]]></title><description><![CDATA[<p>vielleicht 'EnvironmentStringsScopedPtr'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149073</guid><dc:creator><![CDATA[St@tic]]></dc:creator><pubDate>Wed, 04 Oct 2006 09:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wie nennt man eine Klasse die im Konstruktor einen Pointer speichert und ihn im Destruktor freigibt? on Wed, 04 Oct 2006 09:51:47 GMT]]></title><description><![CDATA[<p>Hallo,<br />
schau dir mal Andrei Alexandrescus scopeguard an.</p>
<p><a href="http://www.ddj.com/dept/cpp/184403758" rel="nofollow">http://www.ddj.com/dept/cpp/184403758</a></p>
<p>Erweiterung:<br />
<a href="http://www.zete.org/people/jlehrer/scopeguard.html" rel="nofollow">http://www.zete.org/people/jlehrer/scopeguard.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149098</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 04 Oct 2006 09:51:47 GMT</pubDate></item></channel></rss>