<?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[Optionale Operation in Templates]]></title><description><![CDATA[<p>Ich arbeite zzt an einem Container der Pointer speichern soll. Ich würde den Container gern so konfigurierbar machen das man auswhählen kann was beim entfernen eines Pointers pasieren soll (nichts, delete, delete[], -&gt;Release). Die ersten 3 Optionen wären ja nicht schwer, aber -&gt;Release geht ja nicht bei allen, womit für mich ein einfaches Switch ausfällt. Gibt es für dieses Problem einen eleganten Lösungsansatz?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257787/optionale-operation-in-templates</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 23:20:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257787.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Jan 2010 13:41:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Optionale Operation in Templates on Sun, 03 Jan 2010 13:41:46 GMT]]></title><description><![CDATA[<p>Ich arbeite zzt an einem Container der Pointer speichern soll. Ich würde den Container gern so konfigurierbar machen das man auswhählen kann was beim entfernen eines Pointers pasieren soll (nichts, delete, delete[], -&gt;Release). Die ersten 3 Optionen wären ja nicht schwer, aber -&gt;Release geht ja nicht bei allen, womit für mich ein einfaches Switch ausfällt. Gibt es für dieses Problem einen eleganten Lösungsansatz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831403</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 03 Jan 2010 13:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Operation in Templates on Sun, 03 Jan 2010 13:48:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T, template&lt;typename&gt; class DestructionPolicy&gt;
struct Container
{
    void something(T* ptr)
    {
        DestructionPolicy&lt;T&gt;::destroy(ptr);
    }
};

template&lt;typename T&gt;
struct Delete
{
    static void destroy(T* ptr)
    {
        delete ptr;
    }
};

template&lt;typename T&gt;
struct ArrayDelete
{
    static void destroy(T* ptr)
    {
        delete [] ptr;
    }
};

template&lt;typename T&gt;
struct Release
{
    static void destroy(T* ptr)
    {
        ptr-&gt;release();
    }
};
</code></pre>
<p>Anwendung dann z.b. so:</p>
<pre><code class="language-cpp">struct foo
{
    void release() {}
};

Container&lt;foo, Release&gt; cont;
cont.something(new foo);
</code></pre>
<p>Wenn der benutzer was anderes will, schreibt er sich eben eine andere Policy.<br />
Nennt sich übrigens Policy-based design. Einfach mal googeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831410</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Sun, 03 Jan 2010 13:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Operation in Templates on Sun, 03 Jan 2010 14:17:29 GMT]]></title><description><![CDATA[<p>Danke werd ich mir mal näher ansehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1831427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1831427</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 03 Jan 2010 14:17:29 GMT</pubDate></item></channel></rss>