<?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[probleme bei templates]]></title><description><![CDATA[<p>hi,</p>
<p>also als erstes möchte ich mein problem mit den templates beschreiben. ich habe &quot;früher&quot; immer makros zum freigeben von pointern auf den heap verwendet. ich zeige einfach mal ein beispiel.</p>
<pre><code class="language-cpp">#define DEL(x) { if(x) { delete x; x = 0; } }
</code></pre>
<p>dieses makro funktioniert so wie ich es erwartet hatte, doch hatte ich später die idee dieses makro durch eine templatefunktion zu ersetzen(wegen typensicherheit). auch hier zeige ich einfach mal den quelltext.</p>
<pre><code class="language-cpp">template&lt;typename ARG_TYPE&gt; void DEL(ARG_TYPE* pHeap) {

     if(pHeap) {

          delete pHeap;
          pHeap = 0;
     }

     return;
}
</code></pre>
<p>doch diese funktion funktionierte nicht ganz wie erwartet. die adresse auf der der zeiger verweist ist nicht null sondern eine negative speicheradresse. ich bin wirklich verzweifelt und habe keine ahnung weshalb das so ist. kann mir jemand helfen?</p>
<p>mfg</p>
<p>DEADBEEF</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156900/probleme-bei-templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 22:11:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156900.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Aug 2006 11:06:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to probleme bei templates on Mon, 21 Aug 2006 11:06:59 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>also als erstes möchte ich mein problem mit den templates beschreiben. ich habe &quot;früher&quot; immer makros zum freigeben von pointern auf den heap verwendet. ich zeige einfach mal ein beispiel.</p>
<pre><code class="language-cpp">#define DEL(x) { if(x) { delete x; x = 0; } }
</code></pre>
<p>dieses makro funktioniert so wie ich es erwartet hatte, doch hatte ich später die idee dieses makro durch eine templatefunktion zu ersetzen(wegen typensicherheit). auch hier zeige ich einfach mal den quelltext.</p>
<pre><code class="language-cpp">template&lt;typename ARG_TYPE&gt; void DEL(ARG_TYPE* pHeap) {

     if(pHeap) {

          delete pHeap;
          pHeap = 0;
     }

     return;
}
</code></pre>
<p>doch diese funktion funktionierte nicht ganz wie erwartet. die adresse auf der der zeiger verweist ist nicht null sondern eine negative speicheradresse. ich bin wirklich verzweifelt und habe keine ahnung weshalb das so ist. kann mir jemand helfen?</p>
<p>mfg</p>
<p>DEADBEEF</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121395</guid><dc:creator><![CDATA[0xDEADBEEF]]></dc:creator><pubDate>Mon, 21 Aug 2006 11:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to probleme bei templates on Mon, 21 Aug 2006 11:13:06 GMT]]></title><description><![CDATA[<p>Du mußt schon eine Referenz auf deinen Pointer übergeben, sonst wird nur die lokale Pointerkopie auf 0 gesetzt.</p>
<pre><code class="language-cpp">template&lt;typename ARG_TYPE&gt; void DEL(ARG_TYPE*&amp; pHeap) {
          delete pHeap;
          pHeap = 0;
}
</code></pre>
<p>Den Test auf 0 vor dem delete kannst du dir sparen, da das vom delete schon selbst geprüft wird. Das return ist auch unnötig.<br />
Wenn du Smartpointer verwendest, bzw. ganz auf rohe Pointer verzichtest, kannst du dir auch diese ganze Funktion sparen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121399</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 21 Aug 2006 11:13:06 GMT</pubDate></item><item><title><![CDATA[Reply to probleme bei templates on Mon, 21 Aug 2006 11:11:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename ARG_TYPE&gt; void DEL(ARG_TYPE*&amp; pHeap) {
    delete pHeap;
    pHeap = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1121401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121401</guid><dc:creator><![CDATA[ppp]]></dc:creator><pubDate>Mon, 21 Aug 2006 11:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to probleme bei templates on Mon, 21 Aug 2006 11:29:26 GMT]]></title><description><![CDATA[<p>danke für eure antworten, funktioniert jetzt endlich. hätte eigendlich selber drauf kommen müssen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121416</guid><dc:creator><![CDATA[0xDEADBEEF]]></dc:creator><pubDate>Mon, 21 Aug 2006 11:29:26 GMT</pubDate></item></channel></rss>