<?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[Implementationsfrage]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Basisklasse für eine verkettete Baumstruktur geschrieben. Diese verfügt bisher über eine statische Methode zum zerstören der kompletten Baumstruktur einschließlich aller Elemente. Soweit sogut <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="🙂"
    /></p>
<p>Zu einem Problem kommt erst wenn diese Methode von einer abgeleiteten Klasse gerufen wird, da hier lediglich der Destruktur der Basisklasse beim Zerstören des Baums gerufen wird. Also habe ich das ganze durch eine Template-Methode ausgetauscht.</p>
<pre><code class="language-cpp">template&lt;class T&gt; static bool Free( node *p )
{
  if ( pNode )
  {
    T *pNode = (T*)p;

    while ( pNode )
    {
      T *pNext = (T*)pNode-&gt;TraverseNext();
      delete pNode;
      pNode = pNext;
    };

    return true;
  };

  return false;
};
</code></pre>
<p>Meine Frage jetzt: Würdet ihr das auch so implementieren oder gibt es da eine bessere/elegantere Möglichkeit? Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123388/implementationsfrage</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 13:10:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123388.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Oct 2005 11:31:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 11:31:27 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Basisklasse für eine verkettete Baumstruktur geschrieben. Diese verfügt bisher über eine statische Methode zum zerstören der kompletten Baumstruktur einschließlich aller Elemente. Soweit sogut <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="🙂"
    /></p>
<p>Zu einem Problem kommt erst wenn diese Methode von einer abgeleiteten Klasse gerufen wird, da hier lediglich der Destruktur der Basisklasse beim Zerstören des Baums gerufen wird. Also habe ich das ganze durch eine Template-Methode ausgetauscht.</p>
<pre><code class="language-cpp">template&lt;class T&gt; static bool Free( node *p )
{
  if ( pNode )
  {
    T *pNode = (T*)p;

    while ( pNode )
    {
      T *pNext = (T*)pNode-&gt;TraverseNext();
      delete pNode;
      pNode = pNext;
    };

    return true;
  };

  return false;
};
</code></pre>
<p>Meine Frage jetzt: Würdet ihr das auch so implementieren oder gibt es da eine bessere/elegantere Möglichkeit? Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/893378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893378</guid><dc:creator><![CDATA[Herrmann]]></dc:creator><pubDate>Sun, 16 Oct 2005 11:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 11:38:22 GMT]]></title><description><![CDATA[<p>Hast Du möglicherweise vergessen den Destructor virtuell zu machen? Zumindest ist er der gezeigten Routine egal, ob sie als statisches Member oder als freie Funktion irgendwo existiert.</p>
<p>Zu der Routine:<br />
Wozu genau soll das Template gut sein?<br />
Der erst Cast zeigt doch, dass Node* und T* kompatibel sein müssen, also vermutlich T eine von Node abgeleitete Klasse sein soll. Da ist ein Template nicht notwendig (virtuelle Destruktoren).</p>
<p>Warum gibt die Routine true oder false zurück? Was willst Du dem Aufrufer damit sagen? Erscheint mir nicht sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/893381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893381</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Sun, 16 Oct 2005 11:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 11:58:09 GMT]]></title><description><![CDATA[<p>Herrmann schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class T&gt; static bool Free( node *p )
{
  if ( pNode )
  {
    T *pNode = (T*)p;

    //..
  };

  return false;
};
</code></pre>
</blockquote>
<p>Wie kannst auf pNode prüfen, wo du es noch nicht initialisiert hast? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/893388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893388</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Sun, 16 Oct 2005 11:58:09 GMT</pubDate></item><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 12:33:34 GMT]]></title><description><![CDATA[<p>Herrmann schrieb:</p>
<blockquote>
<p>Meine Frage jetzt: Würdet ihr das auch so implementieren</p>
</blockquote>
<p>Nein.</p>
<p>Herrmann schrieb:</p>
<blockquote>
<p>oder gibt es da eine bessere/elegantere Möglichkeit? Danke.</p>
</blockquote>
<p>Wie bereits gesagt wurde, virtueller dtor ist ein gutes Stichwort.</p>
<p>btw:<br />
Warum eine statische Funktion 'Free(node)' und keine Memberfunktion 'Free()'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/893414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893414</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 16 Oct 2005 12:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 12:44:13 GMT]]></title><description><![CDATA[<blockquote>
<p>Meine Frage jetzt: Würdet ihr das auch so implementieren</p>
</blockquote>
<p>Nein dein Programmierstil ist grauenhaft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/893431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893431</guid><dc:creator><![CDATA[*guck*]]></dc:creator><pubDate>Sun, 16 Oct 2005 12:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Implementationsfrage on Sun, 16 Oct 2005 13:24:10 GMT]]></title><description><![CDATA[<p>virtuelle Destruktoren - das ist es. Wieso denke ich immer so kompliziert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Danke.</p>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6774">@don_basto</a>, das war nur ein Tippfehler. Es sollte nur der Eingangszeiger überprüft werden.</p>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2813">@groovemaster</a>, deine Frage bezüglich der statische Methode ist schon berechtigt: Werde ich ändern <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/893446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/893446</guid><dc:creator><![CDATA[Herrmann]]></dc:creator><pubDate>Sun, 16 Oct 2005 13:24:10 GMT</pubDate></item></channel></rss>