<?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[using in Headers]]></title><description><![CDATA[<p>Ich bin gerade überfolgendes gestolpert:</p>
<pre><code class="language-cpp">// Camera.h
#include &quot;math/Vector3.h&quot;

using math::Vec3;

class Camera {
public:
   Vec3 eye;
};

// Sphere.h
#include &quot;Camera.h&quot;
class Sphere {
   Vec3 c;  // Darum gehts
}:
</code></pre>
<p>Ich war zunächst erstaunt, dass dieser Code kompiliert, obwohl ich nicht math::Vec3 c; geschrieben habe, sondern nur Vec3 c; Der Grund ist wohl, dass ich das using math::Vec3 in Camera.h habe und das dann auch in Sphere.h gilt.</p>
<p>Jetzt frage ich mich: Ist so ein using Namespace::TypXY; überhaupt gut in einem Header? Weil eigentlich möchte ich NICHT, dass Vec3 in Sphere.h automatisch aufgelöst wird. Sollte ich in Headern die Namespaces immer ausschreiben und die usings nur in .cpp nutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247571/using-in-headers</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 11:59:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247571.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Aug 2009 19:48:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 19:48:49 GMT]]></title><description><![CDATA[<p>Ich bin gerade überfolgendes gestolpert:</p>
<pre><code class="language-cpp">// Camera.h
#include &quot;math/Vector3.h&quot;

using math::Vec3;

class Camera {
public:
   Vec3 eye;
};

// Sphere.h
#include &quot;Camera.h&quot;
class Sphere {
   Vec3 c;  // Darum gehts
}:
</code></pre>
<p>Ich war zunächst erstaunt, dass dieser Code kompiliert, obwohl ich nicht math::Vec3 c; geschrieben habe, sondern nur Vec3 c; Der Grund ist wohl, dass ich das using math::Vec3 in Camera.h habe und das dann auch in Sphere.h gilt.</p>
<p>Jetzt frage ich mich: Ist so ein using Namespace::TypXY; überhaupt gut in einem Header? Weil eigentlich möchte ich NICHT, dass Vec3 in Sphere.h automatisch aufgelöst wird. Sollte ich in Headern die Namespaces immer ausschreiben und die usings nur in .cpp nutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759735</guid><dc:creator><![CDATA[ooppl]]></dc:creator><pubDate>Wed, 12 Aug 2009 19:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 19:51:50 GMT]]></title><description><![CDATA[<p>Nein!!!!!!!!</p>
<p>Niemals using in Header verwenden. Denn es gilt nich nur für die cpp, sonder für jeden Quelltext in welchen du die h includest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759738</guid><dc:creator><![CDATA[Verneiner]]></dc:creator><pubDate>Wed, 12 Aug 2009 19:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 19:52:43 GMT]]></title><description><![CDATA[<p>ooppl schrieb:</p>
<blockquote>
<p>Ich bin gerade überfolgendes gestolpert:</p>
<pre><code class="language-cpp">// Camera.h
#include &quot;math/Vector3.h&quot;

using math::Vec3;

class Camera {
public:
   Vec3 eye;
};

// Sphere.h
#include &quot;Camera.h&quot;
class Sphere {
   Vec3 c;  // Darum gehts
}:
</code></pre>
<p>Ich war zunächst erstaunt, dass dieser Code kompiliert, obwohl ich nicht math::Vec3 c; geschrieben habe, sondern nur Vec3 c; Der Grund ist wohl, dass ich das using math::Vec3 in Camera.h habe und das dann auch in Sphere.h gilt.</p>
<p>Jetzt frage ich mich: Ist so ein using Namespace::TypXY; überhaupt gut in einem Header? Weil eigentlich möchte ich NICHT, dass Vec3 in Sphere.h automatisch aufgelöst wird. Sollte ich in Headern die Namespaces immer ausschreiben und die usings nur in .cpp nutzen?</p>
</blockquote>
<p>Man vermeidet using in Headern, da es den Sinn von Namespaces, wie du ja siehst, vollkommen zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759739</guid><dc:creator><![CDATA[BBBB]]></dc:creator><pubDate>Wed, 12 Aug 2009 19:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 19:52:45 GMT]]></title><description><![CDATA[<p>ooppl schrieb:</p>
<blockquote>
<p>Sollte ich in Headern die Namespaces immer ausschreiben und die usings nur in .cpp nutzen?</p>
</blockquote>
<p>Sehr richtig!</p>
<p>Und ich gratuliere, du bist einer der ersten seit langem, welcher dies wieder mal selber erkannt hat. Das gibt einem Hoffnung <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="🤡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759740</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 12 Aug 2009 19:52:45 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 20:05:25 GMT]]></title><description><![CDATA[<p>Hehe. Vielleicht ist ja doch noch nicht Hopfen &amp; Malz bei mir verloren^^</p>
<p>Dann habe ich noch 2 kleine Frage. Sagen wir ich habe den Namespace Main::Math:</p>
<pre><code class="language-cpp">// Vector.h
namespace Main {

namespace Math

class Vector { ... };

}
</code></pre>
<p>und den will ich jetzt in der Datei Foo.cpp nutzen:</p>
<pre><code class="language-cpp">// Foo.cpp (CPP Datei!)
namespace Main {

namespace Scene

Foo::method() {

}

}
</code></pre>
<p>Meine 2 Fragen:<br />
Wenn ich das &quot;using namespace&quot; irgendwo in den Block von &quot;namespace Main&quot; schreibe, reicht ja offenbar ein &quot;using namespace Math&quot; (statt using namespace Main::Math&quot;). Ist diese Kurzform &quot;böse&quot; oder ist das ok?</p>
<p>Spielt es eine Rolle, wo ich das using namespace hinschreibe? Also sollte ich &quot;using namespace Math&quot; in den Main Block, oder Scene Block oder global?</p>
<p>Danke <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/1759743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759743</guid><dc:creator><![CDATA[ooppl]]></dc:creator><pubDate>Wed, 12 Aug 2009 20:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Wed, 12 Aug 2009 21:23:37 GMT]]></title><description><![CDATA[<p>ooppl schrieb:</p>
<blockquote>
<p>Wenn ich das &quot;using namespace&quot; irgendwo in den Block von &quot;namespace Main&quot; schreibe, reicht ja offenbar ein &quot;using namespace Math&quot; (statt using namespace Main::Math&quot;). Ist diese Kurzform &quot;böse&quot; oder ist das ok?</p>
</blockquote>
<p>Daran ist grundsätzlich nichts böses. Der Namensraum <code>Math</code> wird dann halt einfach im Namensraum <code>Main</code> ausgeleert. Der Namensraum <code>Math</code> wird auch gefunden, da er sich schliesslich im Namensraum <code>Main</code> befindet.</p>
<p>ooppl schrieb:</p>
<blockquote>
<p>Spielt es eine Rolle, wo ich das using namespace hinschreibe? Also sollte ich &quot;using namespace Math&quot; in den Main Block, oder Scene Block oder global?</p>
</blockquote>
<p>Ja, es spielt eine Rolle. Dort wo du ein <code>using namespace</code> machst, wird der Namensraum auch ausgeleert. Ich persönlich ziehe deshalb immer den am meistens qualifizierten Bereich vor und schreibe ein <code>using namespace</code> fast nur im Funktionsblock und dort zum Teil sogar in einem eigenen Block.</p>
<p>Ganz selten leere ich einen Namensraum im globalen Namensraum aus.</p>
<p>Sowas gehört aber etwas zum Codestil und ist daher auch Geschmacksache.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759779</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 12 Aug 2009 21:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Thu, 13 Aug 2009 00:25:18 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>ooppl schrieb:</p>
<blockquote>
<p>Wenn ich das &quot;using namespace&quot; irgendwo in den Block von &quot;namespace Main&quot; schreibe, reicht ja offenbar ein &quot;using namespace Math&quot; (statt using namespace Main::Math&quot;). Ist diese Kurzform &quot;böse&quot; oder ist das ok?</p>
</blockquote>
<p>Daran ist grundsätzlich nichts böses. Der Namensraum <code>Math</code> wird dann halt einfach im Namensraum <code>Main</code> ausgeleert. Der Namensraum <code>Math</code> wird auch gefunden, da er sich schliesslich im Namensraum <code>Main</code> befindet.</p>
<p>ooppl schrieb:</p>
<blockquote>
<p>Spielt es eine Rolle, wo ich das using namespace hinschreibe? Also sollte ich &quot;using namespace Math&quot; in den Main Block, oder Scene Block oder global?</p>
</blockquote>
<p>Ja, es spielt eine Rolle. Dort wo du ein <code>using namespace</code> machst, wird der Namensraum auch ausgeleert. Ich persönlich ziehe deshalb immer den am meistens qualifizierten Bereich vor und schreibe ein <code>using namespace</code> fast nur im Funktionsblock und dort zum Teil sogar in einem eigenen Block.</p>
<p>Ganz selten leere ich einen Namensraum im globalen Namensraum aus.</p>
<p>Sowas gehört aber etwas zum Codestil und ist daher auch Geschmacksache.</p>
<p>Grüssli</p>
</blockquote>
<p>Und in China ist ein Sack umgefallen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759849</guid><dc:creator><![CDATA[ooppl]]></dc:creator><pubDate>Thu, 13 Aug 2009 00:25:18 GMT</pubDate></item><item><title><![CDATA[Reply to using in Headers on Thu, 13 Aug 2009 00:27:33 GMT]]></title><description><![CDATA[<p>Anscheinend möchte ooppl keine Ratschläge mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759851</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 13 Aug 2009 00:27:33 GMT</pubDate></item></channel></rss>