<?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[In Template prüfen, ob Templatevariable ein Zeiger ist??]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab da eine Frage, ist es irgendwie möglich, innerhalb einer Template-Methode zu prüfen ob die Template-Variable ein Zeiger auf ein Objekt ist?</p>
<pre><code class="language-cpp">template&lt;class T&gt;
bool CMyFirstTemplate&lt;T&gt;::Insert(T Value)
{

  //...verarbeite Value und wenn Value ein Zeiger auf ein Objekt ist,
  //möchte ich den Speicher freigeben

  if(Value != NULL)
      delete Value;
}
</code></pre>
<p>bei dem oben gezeigten Code-Ausschnitt, meckert der Compiler über Zeile 8</p>
<p>ich hoffe, ihr könnt mir da weiterhelfen.</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193100/in-template-prüfen-ob-templatevariable-ein-zeiger-ist</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 20:15:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193100.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2007 23:17:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Fri, 21 Sep 2007 23:17:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab da eine Frage, ist es irgendwie möglich, innerhalb einer Template-Methode zu prüfen ob die Template-Variable ein Zeiger auf ein Objekt ist?</p>
<pre><code class="language-cpp">template&lt;class T&gt;
bool CMyFirstTemplate&lt;T&gt;::Insert(T Value)
{

  //...verarbeite Value und wenn Value ein Zeiger auf ein Objekt ist,
  //möchte ich den Speicher freigeben

  if(Value != NULL)
      delete Value;
}
</code></pre>
<p>bei dem oben gezeigten Code-Ausschnitt, meckert der Compiler über Zeile 8</p>
<p>ich hoffe, ihr könnt mir da weiterhelfen.</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370432</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Fri, 21 Sep 2007 23:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Fri, 21 Sep 2007 23:51:12 GMT]]></title><description><![CDATA[<p>#include &lt;boost/type_traits/is_pointer.hpp&gt;<br />
boost::is_pointer&lt;T&gt;::value</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370441</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 21 Sep 2007 23:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 07:12:03 GMT]]></title><description><![CDATA[<p>ich würd's gerne herausfinden OHNE die BOOST-Lib zu benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370492</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sat, 22 Sep 2007 07:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 07:56:09 GMT]]></title><description><![CDATA[<p>Ja, dann machs doch einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370510</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 22 Sep 2007 07:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 07:59:28 GMT]]></title><description><![CDATA[<p>ja NULL ist kein Standard C++ :o</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370511</guid><dc:creator><![CDATA[Aprollo]]></dc:creator><pubDate>Sat, 22 Sep 2007 07:59:28 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 08:27:59 GMT]]></title><description><![CDATA[<p>Das kannst du ganz einfach:</p>
<pre><code class="language-cpp">template&lt; typename type &gt; struct is_pointer_t
{
  enum{ value = 0 };
};

template&lt; template type &gt; struct is_pointer_t&lt; type* &gt;
{
  enum{ value = 1 };
};

template&lt; typename type &gt; is_pointer_t&lt; type &gt; is_pointer( type t )
{
  return is_pointer_t&lt; type &gt;();
}

//Benutzung is_pointer_t&lt; char* &gt;::value
//oder is_pointer( argv ).value
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370519</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sat, 22 Sep 2007 08:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 13:45:21 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13970">@lolz</a>, danke für den Tip!!!!!! werd's gleich mal implementieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370668</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sat, 22 Sep 2007 13:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 13:54:32 GMT]]></title><description><![CDATA[<p>nightmare8019 schrieb:</p>
<blockquote>
<p>ich würd's gerne herausfinden OHNE die BOOST-Lib zu benutzen</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;tr1/type_traits&gt;

std::tr1::is_pointer&lt;char*&gt;::value
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370672</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sat, 22 Sep 2007 13:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 14:53:26 GMT]]></title><description><![CDATA[<p>hmm...wenn ich so recht nachdenke, wird der Compiler trotzdem meckern. Ich kann zwar mit is_pointer(...) herausfinden, ob es ein Zeiger ist oder nicht, jedoch wird er im Code trotzdem an der Stelle</p>
<pre><code class="language-cpp">...
 delete Value;
...
</code></pre>
<p>meckern. Oder sehe ich da etwas falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370690</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sat, 22 Sep 2007 14:53:26 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 14:57:38 GMT]]></title><description><![CDATA[<p>...es ist nämlich so, dass ich in einer eigenen Template-Listenklasse eine Methode namens DoAutoDelete() einfügen möchte. Und wenn in der Liste Zeiger auf Objekte abgelegt wurden, sollen diese Objekte auf Benutzerwunsch von der Templateklasse beim Destruktoraufruf automatisch gelöscht werden.<br />
das ist der eigentliche Hintergrund meiner Fragerei</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370692</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sat, 22 Sep 2007 14:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 15:20:11 GMT]]></title><description><![CDATA[<p>Versuch mal folgendes:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; inline void cleanup( T&amp; t )  { }
template &lt;typename T&gt; inline void cleanup( T*&amp; t ) { delete t; } // delete (T*)0; ist harmlos

template&lt;class T&gt;
bool CMyFirstTemplate&lt;T&gt;::Insert(T Value)
{

  //...verarbeite Value und wenn Value ein Zeiger auf ein Objekt ist,
  //möchte ich den Speicher freigeben

  //if(Value != NULL)
  //    delete Value;
  cleanup(Value);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370698</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 22 Sep 2007 15:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 17:13:27 GMT]]></title><description><![CDATA[<p>hallo finix,</p>
<p>danke für den Vorschlag, ich hab's eingebaut und eigentlich hätte es funktionieren müssen, aber zur Laufzeit springt das Programm immer in die erste Variante also:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; inline void cleanup( T&amp; t )  { }
</code></pre>
<p>und NICHT in:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; inline void cleanup( T*&amp; t ) { delete t; }
</code></pre>
<p>ich habe die Funktionen nicht als &quot;inline&quot; eingebaut aber das spielt wohl nix zur Sache..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370741</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sat, 22 Sep 2007 17:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 18:13:36 GMT]]></title><description><![CDATA[<p>Ich weiß es klingt albern, aber was ist, wenn du die Template-Deklaration für den Pointer zeilenmäßig <em>über</em> das andere machst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370761</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 22 Sep 2007 18:13:36 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 22:33:24 GMT]]></title><description><![CDATA[<p>Ich würde es in eine Klasse verlagern, da sind die Regeln nach denen ausgewählt wird wesentlich klarer. Das sollte gehen:</p>
<pre><code class="language-cpp">template &lt;class T&gt; struct cleaner
{
    static void clean(T const&amp;){}
}

template &lt;class T&gt; struct cleaner&lt;T*&gt;
{
    static void clean(T* p){ delete p; }
}

template &lt;class T&gt; void clean(T const&amp; t)
{
    cleaner&lt;T&gt;::clean(t);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370854</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 22 Sep 2007 22:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sat, 22 Sep 2007 23:23:48 GMT]]></title><description><![CDATA[<p>Hatte deinen letzten Post nicht gesehen. In dem Fall stimme ich natürlich hustbaer zu:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class default_cleanup_policy
{
public:
  void cleanup( T const&amp; t ) { }

protected:
  ~default_cleanup_policy() { }
};

template &lt;typename T&gt;
class default_cleanup_policy&lt;T*&gt;
{
public:
  void cleanup( T const* t ) { if (auto_delete_) delete t; }

  bool auto_delete() const             { return auto_delete_; }
  void auto_delete( bool auto_delete ) { auto_delete_ = auto_delete; }

protected:
   default_cleanup_policy() : auto_delete_(true) { }
  ~default_cleanup_policy() { }

private:
  bool  auto_delete_;
};

template &lt;
  typename T,
  class cleanup_policy = default_cleanup_policy&lt;T&gt;
&gt;
struct my_first_template : public cleanup_policy
{
  bool tnsert( T const&amp; value )
  {
    //...verarbeite Value und wenn Value ein Zeiger auf ein Objekt ist,
    //möchte ich den Speicher freigeben

    cleanup(value);
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370866</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 22 Sep 2007 23:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sun, 23 Sep 2007 09:33:42 GMT]]></title><description><![CDATA[<p>hallo finix &amp; hustbaer! ich danke euch für die Hilfe!!<br />
es funktioniert wunderbar!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:<br />
jetzt hab ich aber noch ein paar fragen,<br />
warum funktioniert das Ganze, wenn man's mit Hilfe der zwei cleanup_policy - Klassen macht, nicht aber wenn man einfach zwei Methoden<br />
a la</p>
<pre><code class="language-cpp">void cleanup(T const&amp; t) {}
void cleanup(T const* t) { if(auto_delete) delete t; }
</code></pre>
<p>in die Klasse implementiert ?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370942</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sun, 23 Sep 2007 09:33:42 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sun, 23 Sep 2007 09:40:21 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:</p>
<p>die zweite Frage bezieht sich auf Zeile 12 in deinem Quelltext.<br />
Kannst du mir kurz erläutern, was das <em><em>&lt;T</em>&gt;</em>* nach dem Klassennamen bewirkt bzw. was es für die Klasse bedeutet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370946</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sun, 23 Sep 2007 09:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sun, 23 Sep 2007 09:57:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:</p>
<p>ich hab mir die zweite Frage mit dem <em><em>&lt;T</em>&gt;[\b] gerade selbst beantwortet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
das die Klasse mit dem &lt;T</em>&gt; am Ende des Klassennamens ist eine explizite Spezialisierung der Klasse [b]default_cleanup_policy** für einen Zeigertyp von T.<br />
richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370956</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sun, 23 Sep 2007 09:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to In Template prüfen, ob Templatevariable ein Zeiger ist?? on Sun, 23 Sep 2007 09:58:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>:</p>
<p>ich hab mir die zweite Frage mit dem <em><em>&lt;T</em>&gt;</em>* gerade selbst beantwortet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
das die Klasse mit dem &lt;T*&gt; am Ende des Klassennamens ist eine explizite Spezialisierung der Klasse <strong>default_cleanup_policy</strong> für einen Zeigertyp von T.<br />
richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370958</guid><dc:creator><![CDATA[nightmare8019]]></dc:creator><pubDate>Sun, 23 Sep 2007 09:58:42 GMT</pubDate></item></channel></rss>