<?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[Verschatelte Namensräume]]></title><description><![CDATA[<p>Hi, ich habe folgenden code in einem Header:</p>
<pre><code>namespace A{
	namespace B{
		class C: {
		};
	};
};
</code></pre>
<p>und in einer anderen Header das Hier:</p>
<pre><code>namespace A{
	class D: {
		A::B::C* m_C;  //Problemzeile
		//B::C* m_C;   //oder das hier geht auch nicht
	};
};
</code></pre>
<p>Und bekomme beim Kompilieren 5 Fehler die verschwinden, wenn ich die Problemzeile auskommentiere:</p>
<pre><code>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C3083: 'B': the symbol to the left of a '::' must be a type
error C2143: syntax error : missing ';' before '*'
error C2039: 'C' : is not a member of 'A'
</code></pre>
<p>Wie kann ich nun die Klasse C als Typ angebeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311039/verschatelte-namensräume</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 20:39:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311039.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Nov 2012 15:25:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:25:55 GMT]]></title><description><![CDATA[<p>Hi, ich habe folgenden code in einem Header:</p>
<pre><code>namespace A{
	namespace B{
		class C: {
		};
	};
};
</code></pre>
<p>und in einer anderen Header das Hier:</p>
<pre><code>namespace A{
	class D: {
		A::B::C* m_C;  //Problemzeile
		//B::C* m_C;   //oder das hier geht auch nicht
	};
};
</code></pre>
<p>Und bekomme beim Kompilieren 5 Fehler die verschwinden, wenn ich die Problemzeile auskommentiere:</p>
<pre><code>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int	
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C3083: 'B': the symbol to the left of a '::' must be a type
error C2143: syntax error : missing ';' before '*'
error C2039: 'C' : is not a member of 'A'
</code></pre>
<p>Wie kann ich nun die Klasse C als Typ angebeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274517</guid><dc:creator><![CDATA[EinAnderer]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:32:52 GMT]]></title><description><![CDATA[<p>Zu viel Python programmiert?</p>
<pre><code class="language-cpp">class C: {
};
</code></pre>
<p>Da ist ein Doppelpunkt zu viel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274522</guid><dc:creator><![CDATA[Der_Eine]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:34:11 GMT]]></title><description><![CDATA[<p><a href="http://ideone.com/35rX8A" rel="nofollow">http://ideone.com/35rX8A</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274523</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:37:52 GMT]]></title><description><![CDATA[<p>Ja, meh die Doppelpunkte bei C und D sind natürlich Tipfehler, cooky451 hat es korrigiert gepostet und compiliert auch, bei mir aber nicht und ich weis nicht wieso und wie ich schon sagte es läuft sobalt die Zeile auskommentiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274524</guid><dc:creator><![CDATA[EinAnderer]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:39:58 GMT]]></title><description><![CDATA[<p>du hast mehrere doppelpunkte, die falsch sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274525</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:40:34 GMT]]></title><description><![CDATA[<p>Ich rate mal ins Blaue und postuliere, dass du ein zirkuläre Abhängigkeit in deinen Headern hast, also die Header sich gegenseitig inkludieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274526</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:40:34 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 15:44:11 GMT]]></title><description><![CDATA[<p>Bingo!</p>
<p>Habe die falsche Header eingebunden, ich Pflaume.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274528</guid><dc:creator><![CDATA[EinAnderer]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:44:11 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Sun, 25 Nov 2012 17:30:25 GMT]]></title><description><![CDATA[<p>EinAnderer schrieb:</p>
<blockquote>
<p>Bingo!</p>
<p>Habe die falsche Header eingebunden, ich Pflaume.<br />
Danke.</p>
</blockquote>
<p>Stichwort forward-declaration. Für deine Pointer brauchst du garnichts einzubinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274563</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 25 Nov 2012 17:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Mon, 26 Nov 2012 01:35:28 GMT]]></title><description><![CDATA[<p>Wenn ich nun mehrere solcher Member hätte, sollte ich die alle &quot;forward-declaration&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274664</guid><dc:creator><![CDATA[EinAnderer]]></dc:creator><pubDate>Mon, 26 Nov 2012 01:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Mon, 26 Nov 2012 01:39:32 GMT]]></title><description><![CDATA[<p>Ja, dann beschleunigst du die Kompilierung du umso mehr. Wenn es wirklich viele sind, hilft auch ein Forward-Deklarations-Header (hat ein fwd für forward im Namen, Beispiel &lt;iosfwd&gt; aus der stdlib). Der sieht dann etwa so aus:</p>
<pre><code class="language-cpp">#ifndef H_ // include guard
#define H_

namespace A {
  class A;
  class B : public A;
  class C;
  class D;
}

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2274665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274665</guid><dc:creator><![CDATA[buchbinder]]></dc:creator><pubDate>Mon, 26 Nov 2012 01:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Mon, 26 Nov 2012 02:03:49 GMT]]></title><description><![CDATA[<p>Ok, ich habe jetzt alles was ich Forward declartion konnte auch so gemacht.<br />
Dafür muss ich dann in mehreren Anderen .cpp Dateien die entfernten Header includieren, ist das so sinnvoll und richtig? So gesehen sollte ich dann sogut wie nie Header in anderne Headern einbinden. Ausser welche mit Templates wie z.B. &lt;vector&gt; Richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274666</guid><dc:creator><![CDATA[EinAnderer]]></dc:creator><pubDate>Mon, 26 Nov 2012 02:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verschatelte Namensräume on Mon, 26 Nov 2012 07:30:33 GMT]]></title><description><![CDATA[<p>EinAnderer schrieb:</p>
<blockquote>
<p>Dafür muss ich dann in mehreren Anderen .cpp Dateien die entfernten Header includieren, ist das so sinnvoll und richtig? So gesehen sollte ich dann sogut wie nie Header in anderne Headern einbinden. Ausser welche mit Templates wie z.B. &lt;vector&gt; Richtig?</p>
</blockquote>
<p>Alles richtig. Dass du die Header jetzt öfter includieren musst, sieht nur auf den ersten Blick so aus. Du musst zwar öfter <code>#include &quot;xyz.h&quot;</code> hinschreiben, aber tatsächlich wurde der Header vorher öfter eingebunden, weil der Präprozessor den überall mit reingenommen hat, wo der andere Header eingebunden wurde (und Header, die den anderen header eingebunden haben usw).</p>
<p>Mit den Forward-declarations stellst du sicher, dass überall nur das eingebunden wird, was auch wirklich gebraucht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274685</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 26 Nov 2012 07:30:33 GMT</pubDate></item></channel></rss>