<?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[mittels friend nur bestimmte Members freigeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Möglichkeit mittels friend nicht eine ganze Klasse sondern nur bestimmte Members zugreifbar zu machen?</p>
<p>Hintergrund ist, dass ich mit Graphen arbeite und eine Klasse Node habe</p>
<pre><code class="language-cpp">class Node
{
    Node* next;
    Node* prev;
    void set_next(Node* n);
    void set_prev(Node* n);
    ...
public:
    ...
}
</code></pre>
<p>Die Knoten sind im Graphen irgendwie geordnet, daher prev und next.</p>
<p>Nun will ich einer Klasse K erlauben,</p>
<pre><code class="language-cpp">void set_next(Node* n);
    void set_prev(Node* n);
</code></pre>
<p>zu benutzen. Wenn ich aber einfach</p>
<pre><code class="language-cpp">friend class K;
</code></pre>
<p>in Node einfüge, darf K ja auf alles zugreifen (was es nicht soll).</p>
<p>Was macht man da am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210365/mittels-friend-nur-bestimmte-members-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 12:35:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210365.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Apr 2008 10:18:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 10:18:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es eine Möglichkeit mittels friend nicht eine ganze Klasse sondern nur bestimmte Members zugreifbar zu machen?</p>
<p>Hintergrund ist, dass ich mit Graphen arbeite und eine Klasse Node habe</p>
<pre><code class="language-cpp">class Node
{
    Node* next;
    Node* prev;
    void set_next(Node* n);
    void set_prev(Node* n);
    ...
public:
    ...
}
</code></pre>
<p>Die Knoten sind im Graphen irgendwie geordnet, daher prev und next.</p>
<p>Nun will ich einer Klasse K erlauben,</p>
<pre><code class="language-cpp">void set_next(Node* n);
    void set_prev(Node* n);
</code></pre>
<p>zu benutzen. Wenn ich aber einfach</p>
<pre><code class="language-cpp">friend class K;
</code></pre>
<p>in Node einfüge, darf K ja auf alles zugreifen (was es nicht soll).</p>
<p>Was macht man da am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489569</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Thu, 10 Apr 2008 10:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 10:45:51 GMT]]></title><description><![CDATA[<p>dann mach set_next und set_prev doch public</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489599</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Thu, 10 Apr 2008 10:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 10:50:47 GMT]]></title><description><![CDATA[<p>zwutz schrieb:</p>
<blockquote>
<p>dann mach set_next und set_prev doch public</p>
</blockquote>
<p>Was dazu führt das jeder die Methoden aufrufen kann, und das ist vom OP sicher nicht gewünscht. Da ich friend extrem selten verwende: ich glaube friend geht immer nur auf Ebene der Klasse, da man meist aber die friend class und class in der Hand hat ist dies aber eher unproblematisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489605</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 10 Apr 2008 10:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 10:58:19 GMT]]></title><description><![CDATA[<p>Es können sowohl Klassen als auch Funktionen als friend deklariert werden.<br />
<a href="http://www.imb-jena.de/~gmueller/kurse/c_c++/c_friend.html" rel="nofollow">http://www.imb-jena.de/~gmueller/kurse/c_c++/c_friend.html</a></p>
<p>Gruss Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489616</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 10 Apr 2008 10:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 11:36:31 GMT]]></title><description><![CDATA[<p>Wenn ich das richtig sehe, wird auf</p>
<p><a href="http://www.imb-jena.de/~gmueller/kurse/c_c++/c_friend.html" rel="nofollow">http://www.imb-jena.de/~gmueller/kurse/c_c++/c_friend.html</a> (siehe Beitrag simon.gysi)</p>
<p>der Fall beschrieben, dass man eine komplette Klasse für eine einzelne Funktion zugreifbar machen will.</p>
<p>Ich will es aber andersherum: eine einzelne Member-Funktion (und nichts vom Rest der Klasse) für eine andere Klasse zugreifbar machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489660</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Thu, 10 Apr 2008 11:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 12:07:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Node
{
   private:
     Node* next;
     Node* prev;
     void set_next();
     void set_prev();
   public:
     friend void guterFreund() {set_next();}
     .
     .
     .
};
</code></pre>
<p>oder habe ich jetzt an deiner Frage vorbeigeschrieben...?<br />
Falls ja sorry <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1489677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489677</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Thu, 10 Apr 2008 12:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 14:30:25 GMT]]></title><description><![CDATA[<p>warum möchtest du das? immerhin gehört eine friend funktion zum normalen interface deiner klasse. du versteckst ja auch nicht die daten vor anderen memberfunktionen?</p>
<p>wie auch immer gibt es natürlich möglichkeiten, zu erreichen, dass bestimmte funktionen nur eine partielle sicht auf die daten ermöglicht wird. z.b. könntest du mit pimpl arbeiten; oder helfer-funktionen erstellen, mit denen die &quot;freunde&quot; arbeiten können. oder sonst irgendwie die daten, auf die zugegriffen werden können soll, von dem rest der klasse abkapseln. (basisklassen, helferklassen, ...)</p>
<p>beispiel (pimpl):</p>
<pre><code class="language-cpp">//node.h
class Node
{
   struct NodeData;
   NodeData* data;
   void set_next (Node* n);

public:
   friend void guterFreund ();
};

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

struct Node::NodeData
{
   Node* next, *prev;
};

void Node::set_next (Node* n)
{
   data-&gt;next = n; //OK
}

//freunde.cc
void guterFreund ()
{
   Node n;
   n.data-&gt;next = new Node; //Fehler!
   n.set_next(new Node); //OK.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1489805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489805</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 10 Apr 2008 14:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to mittels friend nur bestimmte Members freigeben on Thu, 10 Apr 2008 18:15:17 GMT]]></title><description><![CDATA[<p>@queer boy</p>
<p>hey cool, du hast meine Namensgebung übernommen <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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1489978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1489978</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Thu, 10 Apr 2008 18:15:17 GMT</pubDate></item></channel></rss>