<?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[Namespace privat?]]></title><description><![CDATA[<p>Wenn ich ein paar freie Funktionen in einen Namespace stecken will und diese Funktionen andere zweite Funktionen aufrufen sollen, aber diese zweiten Funktionen nicht von jemand anders verwendet werden sollen, wie macht man das am besten? Kann man irgendwie sagen, dass die Funktionen nur von Funktionen im selben Namespace aufgerufen werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208015/namespace-privat</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 10:51:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208015.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Mar 2008 19:20:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 19:20:13 GMT]]></title><description><![CDATA[<p>Wenn ich ein paar freie Funktionen in einen Namespace stecken will und diese Funktionen andere zweite Funktionen aufrufen sollen, aber diese zweiten Funktionen nicht von jemand anders verwendet werden sollen, wie macht man das am besten? Kann man irgendwie sagen, dass die Funktionen nur von Funktionen im selben Namespace aufgerufen werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473876</guid><dc:creator><![CDATA[hiho]]></dc:creator><pubDate>Thu, 13 Mar 2008 19:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 19:22:22 GMT]]></title><description><![CDATA[<p>Du könntest sie einfach aus dem Header rauslassen <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/1473880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473880</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 13 Mar 2008 19:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 19:23:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das geht nicht. Übliche Praktik ist, einen verschachtelten Namensbereich namens 'impl' o.ä. zu verwenden, der die „privaten“ Implementierungen enthält. Dadurch sind sie zwar genauso offen, aber der Name des Namensbereichs ist quasi ein großes Warnschild, das sagt „Pfoten weg!“</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473882</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 13 Mar 2008 19:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 19:38:29 GMT]]></title><description><![CDATA[<p>hiho schrieb:</p>
<blockquote>
<p>Wenn ich ein paar freie Funktionen in einen Namespace stecken will und diese Funktionen andere zweite Funktionen aufrufen sollen, aber diese zweiten Funktionen nicht von jemand anders verwendet werden sollen, wie macht man das am besten? Kann man irgendwie sagen, dass die Funktionen nur von Funktionen im selben Namespace aufgerufen werden können?</p>
</blockquote>
<p>wenn du die implementation der funktionen sauber in einer eigenen übersetzungseinheit hast (und du nicht unbedingt templates verwendest), dann könntest du diese zweiten funktionen auch in einen anonymen namespace stecken.</p>
<pre><code class="language-cpp">//foo.h

namespace foo
{
   void bar ();
}

//foo.cc
#include &quot;foo.h&quot;

namespace foo
{
   namespace
   {
      void baz () 
      {
      }
   }

   void bar ()
   {
      baz (); 
   }
}

//x.cc
#include &quot;foo.h&quot;

int main ()
{
   //keine möglichkeit, auf baz zuzugreifen
}
</code></pre>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Du könntest sie einfach aus dem Header rauslassen <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>im gegensatz dazu kannst du mit anonymen namespaces davon ausgehen, dass garantiert keine andere übersetzungseinheit die funktion verwendet.</p>
<p>bei problemen: <code>namespace impl</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473893</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 13 Mar 2008 19:38:29 GMT</pubDate></item><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 19:40:08 GMT]]></title><description><![CDATA[<p>hiho schrieb:</p>
<blockquote>
<p>Kann man irgendwie sagen, dass die Funktionen nur von Funktionen im selben Namespace aufgerufen werden können?</p>
</blockquote>
<p>Dies geht nur in der gleichen Übersetzungseinheit und nennt sich anonymer Namensraum (namespace ohne Bezeichner).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473895</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 13 Mar 2008 19:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to Namespace privat? on Thu, 13 Mar 2008 20:00:02 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Du könntest sie einfach aus dem Header rauslassen <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>im gegensatz dazu kannst du mit anonymen namespaces davon ausgehen, dass garantiert keine andere übersetzungseinheit die funktion verwendet.</p>
</blockquote>
<p>Naja, in der anderen Ü-Einheit müsste die Funktion auch noch im selben Namespace sein und oft pachtet man sie ja für sich alleine. Aber gut, ein anonymer Namespace ist die definitiv bessere Methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473907</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 13 Mar 2008 20:00:02 GMT</pubDate></item></channel></rss>