<?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[friend für Methoden]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich verstehe das mit dem friend-Schlüsselwort nicht.<br />
Ich habe eine Klasse A und eine Klasse B.<br />
A hat eine private Methode, auf die aber Klasse B zugreifen können soll.<br />
Wie muss ich das also machen?</p>
<p>Grüße, pktm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211591/friend-für-methoden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 07:21:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211591.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Apr 2008 19:53:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 19:53:51 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich verstehe das mit dem friend-Schlüsselwort nicht.<br />
Ich habe eine Klasse A und eine Klasse B.<br />
A hat eine private Methode, auf die aber Klasse B zugreifen können soll.<br />
Wie muss ich das also machen?</p>
<p>Grüße, pktm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497764</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 19:53:51 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 19:58:46 GMT]]></title><description><![CDATA[<p>du sagst in klasse a &quot;friend B&quot; oder &quot;friend class B&quot; (weiss die syntax nicht auswendig)</p>
<p>aber friend klassen sollte man eher nicht verwenden weil das ausschließlich ein c++ feature ist und nicht in java und auch nicht in c# vorhanden, ka wie es mit anderen programmiersprachen aussieht aber das sind die großen (VB hat es glaub ich auch nicht)</p>
<p>und wenn man sich das angewöhnt und man auf ein mal was anderes als c++ programmiert ist das schlecht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497767</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Thu, 24 Apr 2008 19:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 20:02:41 GMT]]></title><description><![CDATA[<p>Vevusio schrieb:</p>
<blockquote>
<p>du sagst in klasse a &quot;friend B&quot; oder &quot;friend class B&quot; (weiss die syntax nicht auswendig)</p>
<p>aber friend klassen sollte man eher nicht verwenden weil das ausschließlich ein c++ feature ist und nicht in java und auch nicht in c# vorhanden, ka wie es mit anderen programmiersprachen aussieht aber das sind die großen (VB hat es glaub ich auch nicht)</p>
<p>und wenn man sich das angewöhnt und man auf ein mal was anderes als c++ programmiert ist das schlecht</p>
</blockquote>
<p>Ah ok. Naja, dass es C++-typisch ist ist nicht so mein Problem, weil es ja ein C++-Programm ist <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="🙂"
    /><br />
In Java/Perl oder was mir sonst noch so über den Weg läuft würde ich dafür einfach öffentliche Methoden nehmen.<br />
Nur wenn man schon mal die Möglichkeit hat sowas zu benutzen... <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>Danke &amp; Grüße, pktm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497772</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 20:02:41 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 20:20:15 GMT]]></title><description><![CDATA[<p>Dabei würde ich einfach aufpassen, dass die &quot;Sicherheit&quot; der Klasse gegen aussen nicht zu stark in Frage gestellt wird. Das Schlüsselwort <em>private</em> hat seinen Sinn nicht darin, den User zu nerven, sondern soll ungewünschten Zugriff auf die Klasse verweigern. Ansonsten machst du Member lieber öffentlich. Aber ich stimme dir zu, in gewissen Fällen ist <em>friend</em> sehr nützlich <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>
<p>Vevusio schrieb:</p>
<blockquote>
<p>aber friend klassen sollte man eher nicht verwenden weil das ausschließlich ein c++ feature ist und nicht in java und auch nicht in c# vorhanden, ka wie es mit anderen programmiersprachen aussieht aber das sind die großen (VB hat es glaub ich auch nicht)</p>
</blockquote>
<p>Diese Argumentation finde ich sehr nützlich, jetzt benutzt sicher keiner mehr <em>friend</em>, weil es ja in anderen Programmiersprachen nicht existiert... Ist ja genau gleich mit überladenen Operatoren, die es z.B. in Java nicht gibt und deshalb auch kein Schwein in C++ verwendet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vevusio schrieb:</p>
<blockquote>
<p>und wenn man sich das angewöhnt und man auf ein mal was anderes als c++ programmiert ist das schlecht</p>
</blockquote>
<p>Das könnte man wohl bei sehr vielen Teilaspekten von C++ sagen. Das kann ich jedoch nicht als Grund für deren Nicht-Verwendung akzeptieren, zumal viele C++-Programmierer gar nicht nebenan noch drei weitere Sprachen betreiben und sich deshalb auch nicht sorgen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497781</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 24 Apr 2008 20:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 21:07:47 GMT]]></title><description><![CDATA[<blockquote>
<p>aber friend klassen sollte man eher nicht verwenden weil das ausschließlich ein c++ feature ist und nicht in java und auch nicht in c# vorhanden, ka wie es mit anderen programmiersprachen aussieht aber das sind die großen (VB hat es glaub ich auch nicht)</p>
</blockquote>
<p>Sorry, aber diese Aussage ist doch völliger Schwachsinn.;)</p>
<p>Es gibt Gründe, warum es verschiedene Programmiersprachen. Sonst gäbe es ja nur eine. Und wenn man eine Sprache hat, ist es nicht der Sinn einen Programmierstil oder Angewohnheiten von anderen Sprachen darauf übertragen zu wollen. Man soll die Sprache so benutzen, wie es der Sinn davon ist und nicht, wie man es gewohnt ist. Ansonsten kann man wieder auf der Sprache programmieren, die man voher hatte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497800</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 24 Apr 2008 21:07:47 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Thu, 24 Apr 2008 23:45:49 GMT]]></title><description><![CDATA[<p>das ist finde ich ein riesen unterschied</p>
<p>operatoren überladen gibt es in java zwar nicht aber statt statt<br />
a = a + b<br />
kann man einfach schreiben a.add(b)</p>
<p>genauso fuer alle anderen operatoren, das laesst sich ganz leicht durch methoden ersetzen</p>
<p>friends verwenden ist aber nicht sowas einfaches sondern es kann sehr stark in die programmstruktur eingreifen und man kann sich angewohnen oft &quot;design patterns&quot; zu verwenden welche nur in c++ funktionieren</p>
<p>dieses keyword wurde in den neuen sprachen ja nicht zum spaß abgeschafft</p>
<p>wenn ihr andere argumente wollt als &quot;das gibts nur in c++&quot;<br />
- es erhoeht die kopplung zwischen zwei klassen was allgemein schlecht ist<br />
- es verletzt die kapselung was schlecht ist</p>
<p>und wenn man sich irgendwelche anti-friend artikel durchliest findet man sicher viel mehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497851</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Thu, 24 Apr 2008 23:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Fri, 25 Apr 2008 01:30:45 GMT]]></title><description><![CDATA[<p>friend gibt es in Java und C# nicht, dafür gibt es &quot;module access&quot; (wie auch immer das jeweils genau heisst).<br />
ist im prinzip dasselbe, nur muss man weniger tippen, dafür ist es auch weniger genau.</p>
<p>wo ist jetzt der grosse unterschied?</p>
<p>was deine 2 angeblichen nachteile angeht: friend kann oft eingesetzt werden um eine starke koppelung zu verhindern, nämlich dort ein paar klassen von natur aus stark gekoppelt sein müssen (oder sollten, aus performance gründen) - mit friend kann man die nämlich schön gegenüber der aussenwelt &quot;zumachen&quot;.</p>
<p>geht wie gesagt in java/c# auch, aber dort haben dann gleich alle klassen eines moduls oder namespaces oder was auch immer zugriff.</p>
<p>ich finde friend da wesentlich besser.</p>
<p>und zuletzt: in sprachen die kein friend kennen wird das prinzip auch oft verwendet, nur werden dort dann naming-conventions und/oder kommentare verwendet um die funktionen als &quot;intern&quot; zu markieren.</p>
<p>mit detail namespaces ist es ja im prinzip auch dasselbe, bloss hier umgekehrt: hier fehlt c++ das feature eine klasse als &quot;modul-intern&quot; zu markieren, deswegen packt man sie in einen detail namespace.</p>
<p>anders gesagt: ich finde deinen rat nicht gut <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/1497857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497857</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 25 Apr 2008 01:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Fri, 25 Apr 2008 01:58:16 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>was deine 2 angeblichen nachteile angeht: friend kann oft eingesetzt werden um eine starke koppelung zu verhindern, nämlich dort ein paar klassen von natur aus stark gekoppelt sein müssen (oder sollten, aus performance gründen) - mit friend kann man die nämlich schön gegenüber der aussenwelt &quot;zumachen&quot;.</p>
</blockquote>
<p>ich stimmte dir zu 100% zu.<br />
friends werden im allgemeinen als teil des interface der jeweiligen klasse gesehen, wie operatoren zb. warum sollte nicht eine zweite klasse dieses interface abstrahieren dürfen?</p>
<p>Vevusio schrieb:</p>
<blockquote>
<p>wenn ihr andere argumente wollt als &quot;das gibts nur in c++&quot;<br />
- es erhoeht die kopplung zwischen zwei klassen was allgemein schlecht ist<br />
- es verletzt die kapselung was schlecht ist</p>
</blockquote>
<p>auch dem stimme ich zu.</p>
<p>nur sollte die schlussfolgerung nicht lauten, friend nicht einzusetzen. vielmehr muss man hier beide seiten in erwägung ziehen: verletzt friend die kapselung und gibt es eine andere, bessere art, die gewünschte funktionalität zu erreichen? dann spricht nichts dagegen, friend nicht zu verwenden. allerdings stellt sich genauso die frage, ob man friend aufgeben sollte, nur weil man es aus anderen sprachen nicht gewohn ist. im endeffekt sollte man über einen wohlbedachten einsatz von friend nicht streiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497859</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 25 Apr 2008 01:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to friend für Methoden on Fri, 25 Apr 2008 07:03:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>um mich mal auf das Gute zu konzentrieren:</p>
<p>Vevusio schrieb:</p>
<blockquote>
<p>...<br />
aber friend klassen sollte man eher nicht verwenden weil ...</p>
</blockquote>
<p>eine solche &quot;Komplettöffnung&quot; für eine andere Klasse nur selten notwendig ist. Stattdessen genügt es oft, wenn einzelne Funktionen &quot;befriendet&quot; werden und man damit eine klare Schnittstelle zwischen den Klassen hat.</p>
<p>Bei einer &quot;Friendklasse&quot; finde ich den Nachteil, dass man die beiden implementationstechnisch sehr eng koppelt ... sobald man die interne Implementation der &quot;befriendenden&quot; Klasse ändert, muss man die Implementierung aller &quot;Friends&quot; durchsehen, ob die damit ein Problem haben (weil sie ja theoretisch auf alles zugreifen können). Da ist es einfacher, wenn es sich nur um klar definierte Funktionen handelt.</p>
<p>Wohlgemerkt: Ich meine nicht, dass Friendklassen <em>immer</em> vermieden werden sollen, sondern nur <em>eher</em> !<br />
Wie so oft gibt es für jede Richtlinie wohlbegründete Ausnahmen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497906</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 25 Apr 2008 07:03:03 GMT</pubDate></item></channel></rss>