<?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[Zwei Klassen aus verschiedenen Namespaces &amp;quot;befreunden&amp;quot;]]></title><description><![CDATA[<p>Hallo, oder besser gesagt: Guten Morgen! <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>Ich habe zwei Klassen, die in verschiedenen Namespaces liegen. Alles spielt sich in einem Ordner ab.</p>
<p>namespace viecher<br />
- class Viech</p>
<p>namespace schnapper<br />
- class Schnapper</p>
<p>Nun möchte ich mein Viech mit dem guten Schnapper befreunden, sodass ein Schnapper die privaten Attribute eines Viechs zugreifen kann.</p>
<p>Die Klasse Viech ist sehr simpel:</p>
<pre><code>//Viech.h

#ifndef VIECHER_H_
#define VIECHER_H

namespace viecher
{
    class Viech
    {
        public:
	      Viech();

	    private:
	      int beine;

	    friend class Schnapper;
    };
}

#endif
</code></pre>
<p>Also nur ein Viech mit privaten Beinen. Die Implementation ist nicht mal nennenswert:</p>
<pre><code>//Viech.cpp

#include &quot;Viech.h&quot;

namespace viecher
{
    Viech::Viech() : beine(5)
    {
    }
}
</code></pre>
<p>So weit, so gut. Nun gibt es noch die Klasse Schnapper, die versucht, auf die privaten Beine eines Viechs zuzugreifen:</p>
<pre><code>//Schnapper.h

#ifndef SCHNAPPER_H_
#define SCHNAPPER_H_

namespace schnapper
{
  class Schnapper
  {
      public:
	    Schnapper();
  };
}

#endif
</code></pre>
<p>Und die Implementation:</p>
<pre><code>//Schnapper.cpp

#include &lt;iostream&gt;
#include &quot;Schnapper.h&quot;
#include &quot;Viech.h&quot;

namespace schnapper
{
    Schnapper::Schnapper()
    {
	    viecher::Viech viech;
	    viecher::Viech viech2;

	    if (viech.beine == viech2.beine) //Compiler-Error
		    std::cout &lt;&lt; &quot;TRUE!&quot;;

    }
}
</code></pre>
<p>Allerdings bekomme ich bei<br />
&quot;int beine;&quot; in &quot;Viecher.cpp&quot; die Fehlermeldung &quot;‘int viecher::Viech::beine’ is private&quot; und in &quot;if (viech.beine == vieh2.beine)&quot; in &quot;Schnapper.cpp&quot; die Meldung &quot;within this context&quot;.</p>
<p>Zusammengefasst sagen mir die Meldungen also:<br />
Du darfst in schnapper::Schnapper nicht auf die privaten Attribute von viecher::Viecher zugreifen.</p>
<p>Wie löse ich das Problem?</p>
<p>Danke im Voraus <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/topic/322389/zwei-klassen-aus-verschiedenen-namespaces-quot-befreunden-quot</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:52:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322389.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Dec 2013 01:07:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Klassen aus verschiedenen Namespaces &amp;quot;befreunden&amp;quot; on Wed, 18 Dec 2013 01:07:45 GMT]]></title><description><![CDATA[<p>Hallo, oder besser gesagt: Guten Morgen! <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>Ich habe zwei Klassen, die in verschiedenen Namespaces liegen. Alles spielt sich in einem Ordner ab.</p>
<p>namespace viecher<br />
- class Viech</p>
<p>namespace schnapper<br />
- class Schnapper</p>
<p>Nun möchte ich mein Viech mit dem guten Schnapper befreunden, sodass ein Schnapper die privaten Attribute eines Viechs zugreifen kann.</p>
<p>Die Klasse Viech ist sehr simpel:</p>
<pre><code>//Viech.h

#ifndef VIECHER_H_
#define VIECHER_H

namespace viecher
{
    class Viech
    {
        public:
	      Viech();

	    private:
	      int beine;

	    friend class Schnapper;
    };
}

#endif
</code></pre>
<p>Also nur ein Viech mit privaten Beinen. Die Implementation ist nicht mal nennenswert:</p>
<pre><code>//Viech.cpp

#include &quot;Viech.h&quot;

namespace viecher
{
    Viech::Viech() : beine(5)
    {
    }
}
</code></pre>
<p>So weit, so gut. Nun gibt es noch die Klasse Schnapper, die versucht, auf die privaten Beine eines Viechs zuzugreifen:</p>
<pre><code>//Schnapper.h

#ifndef SCHNAPPER_H_
#define SCHNAPPER_H_

namespace schnapper
{
  class Schnapper
  {
      public:
	    Schnapper();
  };
}

#endif
</code></pre>
<p>Und die Implementation:</p>
<pre><code>//Schnapper.cpp

#include &lt;iostream&gt;
#include &quot;Schnapper.h&quot;
#include &quot;Viech.h&quot;

namespace schnapper
{
    Schnapper::Schnapper()
    {
	    viecher::Viech viech;
	    viecher::Viech viech2;

	    if (viech.beine == viech2.beine) //Compiler-Error
		    std::cout &lt;&lt; &quot;TRUE!&quot;;

    }
}
</code></pre>
<p>Allerdings bekomme ich bei<br />
&quot;int beine;&quot; in &quot;Viecher.cpp&quot; die Fehlermeldung &quot;‘int viecher::Viech::beine’ is private&quot; und in &quot;if (viech.beine == vieh2.beine)&quot; in &quot;Schnapper.cpp&quot; die Meldung &quot;within this context&quot;.</p>
<p>Zusammengefasst sagen mir die Meldungen also:<br />
Du darfst in schnapper::Schnapper nicht auf die privaten Attribute von viecher::Viecher zugreifen.</p>
<p>Wie löse ich das Problem?</p>
<p>Danke im Voraus <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/2372502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372502</guid><dc:creator><![CDATA[Dudedudedude]]></dc:creator><pubDate>Wed, 18 Dec 2013 01:07:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen aus verschiedenen Namespaces &amp;quot;befreunden&amp;quot; on Wed, 11 Jun 2014 22:38:18 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372505</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 22:38:18 GMT</pubDate></item></channel></rss>