<?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[Klasse verstecken]]></title><description><![CDATA[<p>Hi:</p>
<pre><code class="language-cpp">#ifndef TEST_HPP
#define TEST_HPP

#include &lt;map&gt;

namespace aaa
{
  struct A // soll nicht nach außen sichtbar sein
  {
    int i;
    bool operator &lt; (const A&amp; a);
  };

  class B // soll nach außen sichtbar sein
  {
    std::map&lt;A, bool&gt; m_map; // braucht A :(
  public:
    int foo();
  };
}

#endif
</code></pre>
<p>Der Code sagt eigentlich alles. Nur in der .cpp Datei in der A definiert wird, soll ein Objekt der Klasse A erstellt werden können. Soll heißen, alles was einfach nur diese Datei &quot;includet&quot; soll A am besten gar nicht sehen und falls doch, wenigstens kein Objekt von A erstellen können. Ist das möglich?</p>
<p>Edit:<br />
Ich fürchte es ist nicht möglich, wäre irgendwie unlogisch, es sei denn ich habe gerade ein riesen Brett vorm Kopf. Trotzdem erscheint mir das wie ein alltägliches Problem, wie löst ihr solche Abhängigkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291162/klasse-verstecken</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 21:25:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291162.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Aug 2011 23:20:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse verstecken on Thu, 11 Aug 2011 23:23:34 GMT]]></title><description><![CDATA[<p>Hi:</p>
<pre><code class="language-cpp">#ifndef TEST_HPP
#define TEST_HPP

#include &lt;map&gt;

namespace aaa
{
  struct A // soll nicht nach außen sichtbar sein
  {
    int i;
    bool operator &lt; (const A&amp; a);
  };

  class B // soll nach außen sichtbar sein
  {
    std::map&lt;A, bool&gt; m_map; // braucht A :(
  public:
    int foo();
  };
}

#endif
</code></pre>
<p>Der Code sagt eigentlich alles. Nur in der .cpp Datei in der A definiert wird, soll ein Objekt der Klasse A erstellt werden können. Soll heißen, alles was einfach nur diese Datei &quot;includet&quot; soll A am besten gar nicht sehen und falls doch, wenigstens kein Objekt von A erstellen können. Ist das möglich?</p>
<p>Edit:<br />
Ich fürchte es ist nicht möglich, wäre irgendwie unlogisch, es sei denn ich habe gerade ein riesen Brett vorm Kopf. Trotzdem erscheint mir das wie ein alltägliches Problem, wie löst ihr solche Abhängigkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105118</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 11 Aug 2011 23:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Thu, 11 Aug 2011 23:23:55 GMT]]></title><description><![CDATA[<p>Mach A doch einfach zu einer privaten nested class von B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105119</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 11 Aug 2011 23:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Thu, 11 Aug 2011 23:24:33 GMT]]></title><description><![CDATA[<p>Du könntest A in eine class legen und nur den Klassen/Funktionen im Header mit Friend Zugriff gewähren. Sonst fällt mir da nichts ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105120</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 11 Aug 2011 23:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Thu, 11 Aug 2011 23:25:57 GMT]]></title><description><![CDATA[<p>Wie schon gesagt wurde:</p>
<pre><code class="language-cpp">class B // soll nach außen sichtbar sein 
  { 
    struct A // soll nicht nach außen sichtbar sein 
    { 
      int i; 
      bool operator &lt; (const A&amp; a); 
    }; 

    std::map&lt;A, bool&gt; m_map; // braucht A :( 
  public: 
    int foo(); 
  };
</code></pre>
<p><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/2105121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105121</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 11 Aug 2011 23:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Thu, 11 Aug 2011 23:33:55 GMT]]></title><description><![CDATA[<p>Ja das Beispiel war doof, es brauchen mehrere Klassen zugriff auf A. Die Sache mit friend guck ich mir mal an, ob es der Aufwand wirklich wert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105122</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 11 Aug 2011 23:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Fri, 12 Aug 2011 01:22:28 GMT]]></title><description><![CDATA[<p>Man löst das üblicherweise einfach so, dass man &quot;A&quot; in einen &quot;Detail&quot; Namespace legt.<br />
Das verhindert zwar nix, dokumentiert allerdings dass &quot;A&quot; nicht für die externe Verwendung gedacht ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105133</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 12 Aug 2011 01:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Fri, 12 Aug 2011 07:45:42 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Ja das Beispiel war doof, es brauchen mehrere Klassen zugriff auf A. Die Sache mit friend guck ich mir mal an, ob es der Aufwand wirklich wert ist.</p>
</blockquote>
<p>Was sind denn A und B genau? Warum brauchen mehrere drauf Zugriff? Und warum soll A versteckt werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105177</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Fri, 12 Aug 2011 07:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse verstecken on Fri, 12 Aug 2011 09:44:48 GMT]]></title><description><![CDATA[<p>Vielleicht noch das pimpl-Idiom?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105253</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 12 Aug 2011 09:44:48 GMT</pubDate></item></channel></rss>