<?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-class definierte Klasse vorab deklarieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse A</p>
<pre><code class="language-cpp">class A
{
public:
    class B;
};

class A::B { };
</code></pre>
<p>dessen in-class definierte Klasse B ich gerne in einer Headerdatei vorab deklarieren wuerde. Ich habe es mit</p>
<pre><code class="language-cpp">class A;
class A::B;
</code></pre>
<p>versucht, was aber nicht zum Erfolg gefuehrt hat. Weiss jemand, ob das geht und - wenn ja - wie man es macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241418/in-class-definierte-klasse-vorab-deklarieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 10:54:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241418.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 May 2009 12:20:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 12:20:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse A</p>
<pre><code class="language-cpp">class A
{
public:
    class B;
};

class A::B { };
</code></pre>
<p>dessen in-class definierte Klasse B ich gerne in einer Headerdatei vorab deklarieren wuerde. Ich habe es mit</p>
<pre><code class="language-cpp">class A;
class A::B;
</code></pre>
<p>versucht, was aber nicht zum Erfolg gefuehrt hat. Weiss jemand, ob das geht und - wenn ja - wie man es macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713281</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Wed, 20 May 2009 12:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 12:25:41 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Weiss jemand, ob das geht?</p>
</blockquote>
<p>Ja, ich weiß es - nein, es geht nicht.<br />
Wozu bräuchtest du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713284</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 20 May 2009 12:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 15:00:42 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Wozu bräuchtest du das?</p>
</blockquote>
<p>Ich habe in der Header-Datei eine Funktion, die einen Parameter vom Typ &quot;Zeiger auf B&quot; hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713373</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Wed, 20 May 2009 15:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 15:06:30 GMT]]></title><description><![CDATA[<p>Warum sollte man ueberhaupt Klassen in Klassen deklarieren. Sehe jetzt keine Vorteile darin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713377</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 20 May 2009 15:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 15:14:01 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Warum sollte man ueberhaupt Klassen in Klassen deklarieren. Sehe jetzt keine Vorteile darin.</p>
</blockquote>
<p>Beispielsweise wenn eine Klasse sehr speziell ist, und sie nur mit einer anderen Klasse zu tun hat. So braucht jemand der eine Liste verwendet ja auch nicht unbedingt eine Ahnung davon, wie die Elemente intern gehalten werden - Dies kann beispielsweise durch eine Inner-Class ausgedrückt werden (Die dann möglichst auch private ist)...</p>
<p>cu André<br />
P.S: Ich verwende Inner-Classes beispielsweise beim Handle/Body-Idiom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713382</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 May 2009 15:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 15:20:33 GMT]]></title><description><![CDATA[<p>Damit es zu keinen Namenskonflikten im globalen Gültigkeitsbreich kommt, wenn man andere Klassen erstellt, die den selben Namen hat wie deine neue Klasse, man aber selbst von der anderen Klasse nichts weiß. Meistens sind die verschachtelten Klassen friends der &quot;Vater&quot;-Klasse (nicht jetzt als Vererbung missverstehen), um diese zu beeinflussen, somit stört sie den Endanwender nicht, der evtl. gar nichts von seiner Existenz weiß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713385</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Wed, 20 May 2009 15:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Wed, 20 May 2009 16:51:43 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Damit es zu keinen Namenskonflikten im globalen Gültigkeitsbreich kommt</p>
</blockquote>
<p>Das Problem sollte mit Namensräumen relativ schnell beseitigt sein.</p>
<p>Man kann auch lokale <code>detail</code> -Namensräume für implementierungsspezifische Konstrukte schaffen, die werden wohl nicht aus Versehen ausgeleert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713432</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 20 May 2009 16:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 06:54:16 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Man kann auch lokale <code>detail</code> -Namensräume für implementierungsspezifische Konstrukte schaffen, die werden wohl nicht aus Versehen ausgeleert.</p>
</blockquote>
<p>Was sind denn <code>detail</code> -Namensräume? Konnte das Stichwort im Stroustrup nicht finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714006</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Fri, 22 May 2009 06:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 07:06:26 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Was sind denn <code>detail</code> -Namensräume? Konnte das Stichwort im Stroustrup nicht finden.</p>
</blockquote>
<p>&quot;namespace detail&quot;, und darauf hoffen das kein Anwender sich daran vergreift...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714009</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 22 May 2009 07:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 07:57:11 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Man kann auch lokale <code>detail</code> -Namensräume für implementierungsspezifische Konstrukte schaffen, die werden wohl nicht aus Versehen ausgeleert.</p>
</blockquote>
<p>Das wird aber eher bei Templateprogrammierung benutzt, wo man in C++ zum Teil keine andere Möglichkeit hat, Implementierungsdeteils zu &quot;verstecken&quot;.</p>
<p>ingobulla schrieb:</p>
<blockquote>
<p>Was sind denn <code>detail</code> -Namensräume? Konnte das Stichwort im Stroustrup nicht finden.</p>
</blockquote>
<p>Solltest Du irgendwann mal Boost benutzen, guck es Dir mal genauer an. Da wird <code>detail</code> oft als Namensraum benutzt. Erfahrungsgemäß vergreift man sich aber auch recht oft daran. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714020</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 22 May 2009 07:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 08:58:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>...<br />
Man kann auch lokale <code>detail</code> -Namensräume für implementierungsspezifische Konstrukte schaffen, die werden wohl nicht aus Versehen ausgeleert.</p>
</blockquote>
<p>Da frage ich auchnochmal nach:<br />
- &quot;detail&quot; ist aber kein keyword sondern eher eine Konvetion, oder?<br />
- wie &quot;leert man Namensräume aus&quot; (oder Konstrukte?) ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714037</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 22 May 2009 08:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 10:02:34 GMT]]></title><description><![CDATA[<blockquote>
<p>- &quot;detail&quot; ist aber kein keyword sondern eher eine Konvetion, oder?</p>
</blockquote>
<p>Ja, eher eine Konvention.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714063</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 22 May 2009 10:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 10:24:10 GMT]]></title><description><![CDATA[<blockquote>
<p>- wie &quot;leert man Namensräume aus&quot; (oder Konstrukte?) ?</p>
</blockquote>
<pre><code class="language-cpp">using namespace xxx;
</code></pre>
<p>Das hast du aber gewusst, oder? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714078</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 22 May 2009 10:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 10:28:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Das hast du aber gewusst, oder?</p>
</blockquote>
<p>Nein, habe nicht geuwsst das man dem so (ausleeren) sagt.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714081</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 22 May 2009 10:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 13:18:10 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<blockquote>
<p>Das hast du aber gewusst, oder?</p>
</blockquote>
<p>Nein, habe nicht geuwsst das man dem so (ausleeren) sagt.</p>
</blockquote>
<p>War wohl eher der zweite Simon gemeint. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ich hab dem einfach Ausleeren gesagt, weil man die Bezeichner im Namespace nicht mehr kategorisiert hat, sondern auf einen globalen Haufen wirft. So schubladen-mässig. <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>Ja, <code>detail</code> ist ja nur eine von vielen Möglichkeiten, vielleicht nicht immer die ideale. Oft kann man auch verschachtelte Klassen oder nur Vorwärtsdeklarationen für PIMPL einsetzen...</p>
<p>Zu dem Missbrauch von <code>detail</code> -Namensräumen: Sorry, aber das kann man dem Bibliotheks-Entwickler nicht vorwerfen. Genauso wenig, wie man ihm <code>#define private public</code> auf Seiten des Anwenders anlasten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714215</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 22 May 2009 13:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to In-class definierte Klasse vorab deklarieren on Fri, 22 May 2009 14:52:41 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Wozu bräuchtest du das?</p>
</blockquote>
<p>Ich habe in der Header-Datei eine Funktion, die einen Parameter vom Typ &quot;Zeiger auf B&quot; hat.</p>
</blockquote>
<p>Dann includiere doch einfach in die Headerdatei die den Pointer benutzen soll den Header der A::B definiert.<br />
(Ja, ich weiß dass das eventuell nicht geht. Aber wenn hier nicht das vollständige Problem gezeigt wird, kann es auch keiner lösen. Am Besten mit dem üblichen: minimaler Code, der das Problem noch beinhaltet.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1714277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1714277</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 22 May 2009 14:52:41 GMT</pubDate></item></channel></rss>