<?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[Nested Class umsetzen]]></title><description><![CDATA[<p>Hallo,<br />
ich würde gerne eine Nested Class in einer Template-Klasse implementieren:</p>
<p>Header:</p>
<pre><code>#ifndef AVLTREE_H
#define AVLTREE_H

#include &lt;memory&gt;

template &lt;typename T&gt; class AVLTree {
public:

private:
  class Node {
    int height = 0;
    T value;

    std::unique_ptr&lt;Node&gt; left = nullptr;
    std::unique_ptr&lt;Node&gt; right = nullptr;

    Node(T v) : value(v) {}
  };

  int getHeight(std::unique_ptr&lt;Node&gt; p);
};

#endif // AVLTREE_H
</code></pre>
<p>CPP:</p>
<pre><code>#include &quot;avltree.h&quot;

int AVLTree::getHeight(std::unique_ptr&lt;AVLTree::Node&gt; p)
{
    if (p == nullptr)
      return -1;
    else
      return p-&gt;height;
}
</code></pre>
<p>Leider erhalte ich bei der Implementierung folgenden Fehler (Zeile 4):</p>
<blockquote>
<p>AVLTree is not a class, namespace, scoped enumeration</p>
</blockquote>
<p>Weiß jemand weiter?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335547/nested-class-umsetzen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 12:31:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335547.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Nov 2015 22:11:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 22:11:18 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich würde gerne eine Nested Class in einer Template-Klasse implementieren:</p>
<p>Header:</p>
<pre><code>#ifndef AVLTREE_H
#define AVLTREE_H

#include &lt;memory&gt;

template &lt;typename T&gt; class AVLTree {
public:

private:
  class Node {
    int height = 0;
    T value;

    std::unique_ptr&lt;Node&gt; left = nullptr;
    std::unique_ptr&lt;Node&gt; right = nullptr;

    Node(T v) : value(v) {}
  };

  int getHeight(std::unique_ptr&lt;Node&gt; p);
};

#endif // AVLTREE_H
</code></pre>
<p>CPP:</p>
<pre><code>#include &quot;avltree.h&quot;

int AVLTree::getHeight(std::unique_ptr&lt;AVLTree::Node&gt; p)
{
    if (p == nullptr)
      return -1;
    else
      return p-&gt;height;
}
</code></pre>
<p>Leider erhalte ich bei der Implementierung folgenden Fehler (Zeile 4):</p>
<blockquote>
<p>AVLTree is not a class, namespace, scoped enumeration</p>
</blockquote>
<p>Weiß jemand weiter?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477107</guid><dc:creator><![CDATA[NestedClass]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 22:32:10 GMT]]></title><description><![CDATA[<p>Templates werden im Header implementiert, da die komplette Implementierung bei Gebrauch sichtbar sein muss =&gt; das Problem existiert nicht.</p>
<p>Der Sinn der Funktion erschließt sich mir nicht: nach Aufruf wird der Konten gelöscht, dann ist die ehemalige Höhe wohl eher belanglos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477108</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 22:40:47 GMT]]></title><description><![CDATA[<p>Ich muss also alles im Header implementieren?</p>
<p>Ähm, ja, ich muss shared_ptr nutzen. Bin gerade noch dabei den Umgang damit zu lernen. <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/2477110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477110</guid><dc:creator><![CDATA[NestedClass]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 22:46:15 GMT]]></title><description><![CDATA[<p>NestedClass schrieb:</p>
<blockquote>
<p>Ich muss also alles im Header implementieren?</p>
</blockquote>
<p>Ja</p>
<blockquote>
<p>Ähm, ja, ich muss shared_ptr nutzen. Bin gerade noch dabei den Umgang damit zu lernen. <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>
</blockquote>
<p>Nein! Die Funktion will ja keinen Besitz übernehmen =&gt; normalen Pointer benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477112</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 22:47:25 GMT]]></title><description><![CDATA[<p>NestedClass schrieb:</p>
<blockquote>
<p>Ähm, ja, ich muss shared_ptr nutzen.</p>
</blockquote>
<p>Ich verstehe nicht, was deine Funktion mit Ownership zu tun hat, das einen Smart-Pointer rechtfertigt. Nimm doch einfach einen Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477113</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Wed, 25 Nov 2015 23:14:53 GMT]]></title><description><![CDATA[<p>D. h., shared_ptr nehme ich nur, wenn mehrere Objekte eine Referenz auf ein Datum haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477118</guid><dc:creator><![CDATA[NestedClass]]></dc:creator><pubDate>Wed, 25 Nov 2015 23:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Thu, 26 Nov 2015 00:16:30 GMT]]></title><description><![CDATA[<p>Nein, <code>shared_ptr</code> nimmst du nur, wenn <em>mehrere</em> Objekte sich den Besitz an einem Objekt <em>teilen</em>, was praktisch nur extrem selten der Fall ist. In der Regel hat jedes Objekt genau einen Besitzer. Falls das Objekt aus irgendwelchen Gründen dynamisch erzeugt werden muss, verwendest du dann <code>unique_ptr</code> , um <em>den einen</em> (hence the name) Besiter des Objektes zu repräsentieren. Code, der ein Objekt nur <em>referenziert</em> (i.e., irgendwas damit macht), bekommt eine Referenz (oder einen Pointer) auf das Objekt...</p>
<p>Zusammenfassung: Es war nie und ist nicht die Idee von Smartpointern, normale Pointer zu ersetzen. Leider suggeriert der unglücklich gewählte Name das offenbar, was bei Vielen zu Verwirrung führt. Smartpointer dienen dazu, den Besitz an einem Objekt zu repräsentieren, was eine zu Pointern und Referenzen konzeptionell völlig orthogonale Angelegenheit darstellt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477121</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 26 Nov 2015 00:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Thu, 26 Nov 2015 06:59:16 GMT]]></title><description><![CDATA[<p>Ok, danke.<br />
Dann ist das aber ok, wenn ich unique_ptr bei den Member-Variablen left und right verwende und die Nodes auf dem Heap erstellt werden? Oder wäre es nicht besser die auf dem Stack zu erstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477127</guid><dc:creator><![CDATA[NestedClass]]></dc:creator><pubDate>Thu, 26 Nov 2015 06:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Thu, 26 Nov 2015 07:30:15 GMT]]></title><description><![CDATA[<p>NestedClass schrieb:</p>
<blockquote>
<p>Oder wäre es nicht besser die auf dem Stack zu erstellen?</p>
</blockquote>
<p>Wie willst du das machen? Ein AVL Baum isz ja sicher keine Konstante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477131</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 26 Nov 2015 07:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Nested Class umsetzen on Thu, 26 Nov 2015 17:20:59 GMT]]></title><description><![CDATA[<p>Ne, ich muss die auf dem Heap erstellen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477206</guid><dc:creator><![CDATA[NestedClass]]></dc:creator><pubDate>Thu, 26 Nov 2015 17:20:59 GMT</pubDate></item></channel></rss>