<?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[Forward-Deklaration auf Nested Classes]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche gerade, eine Forward-Deklaration auf eine Nested Class hinzubekommen, irgendwie will es aber nicht klappen.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// a.h
..
class A
{
public:
  class AA {
    ...
  };
};
</code></pre>
<pre><code class="language-cpp">// b.h

// a.h hier nicht inkludieren, da viel zu großer Header

void f( A::AA* a);
</code></pre>
<p>Da in b.h nur ein Pointer auf A::AA verwendet wird, sollte A::AA ja nicht bekannt sein müssen. Wie schreibe ich jetzt aber eine gültige Forward-Deklaration hin? Falls das überhaupt möglich ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123243/forward-deklaration-auf-nested-classes</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 11:26:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123243.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Oct 2005 09:44:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 09:44:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche gerade, eine Forward-Deklaration auf eine Nested Class hinzubekommen, irgendwie will es aber nicht klappen.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// a.h
..
class A
{
public:
  class AA {
    ...
  };
};
</code></pre>
<pre><code class="language-cpp">// b.h

// a.h hier nicht inkludieren, da viel zu großer Header

void f( A::AA* a);
</code></pre>
<p>Da in b.h nur ein Pointer auf A::AA verwendet wird, sollte A::AA ja nicht bekannt sein müssen. Wie schreibe ich jetzt aber eine gültige Forward-Deklaration hin? Falls das überhaupt möglich ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/892144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892144</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 14 Oct 2005 09:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 09:47:05 GMT]]></title><description><![CDATA[<p>Hallo,<br />
das ist leider nicht möglich. Um eine nested Class zu deklarieren brauchst du die vollständige Definition der umschließenden Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/892151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892151</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 14 Oct 2005 09:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 09:49:36 GMT]]></title><description><![CDATA[<p>Danke für die Antwort. Das habe ich schon befürchtet.</p>
<p>Vielleicht ziehe ich dann die Nested Class aus der Klasse raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/892154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892154</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 14 Oct 2005 09:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 12:32:25 GMT]]></title><description><![CDATA[<p>Hm, wäre es eine lösung die Nested Class von einer Basisklasse<br />
abzuleiten, welche ausserhalb der Klasse liegt ?<br />
Dann könnte man evtl. einfach einen Pointer der Basisklasse verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/892293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892293</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 14 Oct 2005 12:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 12:37:35 GMT]]></title><description><![CDATA[<p>Danach bräuchstest Du aber einen Downcast in die Nested-Class, oder müsstest die Funktionalität eh schon in die Basisklasse einziehen. Von daher hat man da auch nicht so viel gewonnen.</p>
<p>Hab zumindest bei mir jetzt die Nested Class rausgeschmissen und gut ist <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/892298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892298</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 14 Oct 2005 12:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 12:59:32 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Danach bräuchstest Du aber einen Downcast in die Nested-Class, oder müsstest die Funktionalität eh schon in die Basisklasse einziehen. Von daher hat man da auch nicht so viel gewonnen.</p>
<p>Hab zumindest bei mir jetzt die Nested Class rausgeschmissen und gut ist <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>Klar, aber du könntest sie auch nur als Proxy nutzen, und<br />
virtuelle Methoden zum weiterleiten nutzen. Die basis kann<br />
ja pure virtual sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/892319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892319</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 14 Oct 2005 12:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to Forward-Deklaration auf Nested Classes on Fri, 14 Oct 2005 13:34:54 GMT]]></title><description><![CDATA[<p>Naja, das wäre zumindest für mich zuviel Aufwand und ein unnötiger Overhead durch virtual (für eine Mini-Klasse, die im wesentlichen zur Datenhaltung dient).</p>
<p>Einen ähnlichen Effekt könnte man vielleicht noch bekommen, indem man einen namespace definiert:</p>
<pre><code class="language-cpp">// a.h
namespace A2 {
  class AA {
  };
}

// b.h
namespace A2 {
  class AA;
}

void f( A2::AA*);
</code></pre>
<p>Dann wäre die Forward-Deklaration legal und es hätte zumindest den Effekt, dass die Klasse nicht sofort aus dem Header &quot;leakt&quot; und nur bei Bedarf mit A2:: oder using A2 sichtbar gemacht wird.</p>
<p>Wenn ich mich recht entsinne, wurden mit dem umkehrten Weg namespaces simuliert, als es noch keine gab / schlecht unterstützt wurden <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/892361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/892361</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 14 Oct 2005 13:34:54 GMT</pubDate></item></channel></rss>