<?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[Anfängerproblem mit friend-Operatoren]]></title><description><![CDATA[<p>Hallo,</p>
<p>das sind meine Dateien:</p>
<pre><code class="language-cpp">// myclass.hpp
class MyClass {
private:
    // Member-Variablen
    // ...
    int m_foo;

public;
    // Klassenmethoden
    // ...

    // friend-Operator für Vergleiche
    friend bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right);
};
</code></pre>
<pre><code class="language-cpp">// myclass.cpp
#include &quot;myclass.hpp&quot;

bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right) {
    return left.m_foo &lt; right.m_foo;
}
</code></pre>
<p>Mein Compiler sagt mir die ganze Zeit nur, dass der less-than-Operator nicht auf die private-Daten von MyClass zugreifen darf...<br />
Aber ich habe ihn doch als friend gekennzeichnet oder?<br />
Mache ich etwas falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248731/anfängerproblem-mit-friend-operatoren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 21:07:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248731.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Aug 2009 11:07:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:07:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das sind meine Dateien:</p>
<pre><code class="language-cpp">// myclass.hpp
class MyClass {
private:
    // Member-Variablen
    // ...
    int m_foo;

public;
    // Klassenmethoden
    // ...

    // friend-Operator für Vergleiche
    friend bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right);
};
</code></pre>
<pre><code class="language-cpp">// myclass.cpp
#include &quot;myclass.hpp&quot;

bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right) {
    return left.m_foo &lt; right.m_foo;
}
</code></pre>
<p>Mein Compiler sagt mir die ganze Zeit nur, dass der less-than-Operator nicht auf die private-Daten von MyClass zugreifen darf...<br />
Aber ich habe ihn doch als friend gekennzeichnet oder?<br />
Mache ich etwas falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768179</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:22:26 GMT]]></title><description><![CDATA[<p>Bis auf das Semikolon statt Doppelpunkt bei &quot;public&quot; sieht's ok aus und der <a href="http://www.comeaucomputing.com/tryitout/" rel="nofollow">Comeau-Compiler</a> kompilierts auch anstandslos - was für einen Compiler nutzt du denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768188</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:22:26 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:29:10 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich benutze VC90</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768194</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:40:49 GMT]]></title><description><![CDATA[<p>Beim VC 10 funktioniert's auch, es muss an etwas anderem liegen. Wenn der obige Code nur hier reingeschrieben ist, hol mal den Originalcode mit Copy&amp;Paste her.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768203</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:46:18 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Mein Compiler sagt mir die ganze Zeit nur, dass der less-than-Operator nicht auf die private-Daten von MyClass zugreifen darf...<br />
Aber ich habe ihn doch als friend gekennzeichnet oder?</p>
</blockquote>
<p>Mit Code::Blocks funktioniert der Code auch. Ich hab ihn jetzt Mal so getestet:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class MyClass
{
    private:
        int m_foo;
    public:
        MyClass(int setter) : m_foo(setter) { }
        friend bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right);
};

bool operator &lt; (const MyClass&amp; left, const MyClass&amp; right)
{
    return left.m_foo &lt; right.m_foo;
}

int main()
{
    MyClass first(5);
    MyClass second(10);
    if(first &lt; second)
        std::cout &lt;&lt; &quot;funzt&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1768206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768206</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:51:00 GMT]]></title><description><![CDATA[<p>ich habe es inzwischen rausbekommen:<br />
Das Problem war, das MyClas in einem Namespace definiert war, der in der cpp-Datei dann per using namespace importiert wurde.<br />
ich habe jetzt mal in der cpp folgendes geschrieben:</p>
<pre><code class="language-cpp">bool ::operator &lt; (const MyClass&amp; left, const MyClass&amp; right) {
    return left.m_foo &lt; right.m_foo;
}
</code></pre>
<p>das funktioniert jetzt auch.</p>
<p>Danke trotzdem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768207</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 11:56:12 GMT]]></title><description><![CDATA[<p>Nochmals Hallo,</p>
<p>habe gleich noch eine Frage:<br />
könnte ich im Namespace der Header-Datei einen Prototyp des Operators anlegen, der dann eben nur im Namespace aber nicht global vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768213</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Aug 2009 11:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 12:16:52 GMT]]></title><description><![CDATA[<p>Warum willst du das tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768234</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Aug 2009 12:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 12:24:35 GMT]]></title><description><![CDATA[<p>hast recht xD<br />
Ist eigentlich Unsinn...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768240</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 28 Aug 2009 12:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 14:05:59 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Nochmals Hallo,</p>
<p>habe gleich noch eine Frage:<br />
könnte ich im Namespace der Header-Datei einen Prototyp des Operators anlegen, der dann eben nur im Namespace aber nicht global vorhanden ist?</p>
</blockquote>
<p>Meinst du so:</p>
<pre><code class="language-cpp">namespace Foo {

class MyClass {

   // ....

};

bool operator&lt;(const MyClass &amp;lhs, const MyClass &amp;rhs);

}   // namespace
</code></pre>
<p>Das geht - und es ist auch kein Unsinn. Ich würde sagen, das ist gängige Praxis.<br />
Was allerdings meinst du mit: &quot;...nur im Namespace aber nicht global vorhanden ist&quot;?<br />
Man kann den Operator durchaus so verwenden:</p>
<pre><code class="language-cpp">int main() {

   Foo::MyClass c1;
   Foo::MyClass c2;
   // ...
   if(c1 &lt; c2) {
      // ...
   }
   // ...
   return 0;
}
</code></pre>
<p>Also könnte man irgendwie schon sagen, dass der Operator &quot;global vorhanden&quot; ist.</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768313</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Fri, 28 Aug 2009 14:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 15:14:58 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11421">@DStefan</a>:<br />
Nein, der operator ist trotzdem global nicht vorhanden.<br />
Er wird nur über ADL gefunden.<br />
Das ist ein Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768358</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 28 Aug 2009 15:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem mit friend-Operatoren on Fri, 28 Aug 2009 15:25:13 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11421">@DStefan</a>:<br />
Nein, der operator ist trotzdem global nicht vorhanden.<br />
Er wird nur über ADL gefunden.<br />
Das ist ein Unterschied.</p>
</blockquote>
<p>Schon klar. Ich wusste nur nicht, ob mit &quot;global nicht vorhanden&quot; nicht vielleicht doch &quot;global nicht zu finden&quot; gemeint war. Deswegen meine ziemlich vorsichtige Formulierung. Man weiß ja nie, was die Jungs so vorhaben <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>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1768365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1768365</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Fri, 28 Aug 2009 15:25:13 GMT</pubDate></item></channel></rss>