<?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[Operator &amp;lt; überladen]]></title><description><![CDATA[<p>Moinsen</p>
<p>Ich habe 2 Fußballteams und möchte gucken wer mehr punkte hat.</p>
<p>Dazu soll der Operand &lt; verwendet werden.</p>
<p>Den rechten Operanden habe ich mit rop.</p>
<p>Auf den linken Operanden wollte ich zugreifen in dem ich einer neuen variable<br />
die Adresse mit &quot;this&quot; gebe.</p>
<p>kriege dann diese Fehler meldung raus:<br />
error: 'bool operator&lt;(const CTeam&amp;)' must take exactly two arguments</p>
<pre><code>bool operator &lt;(CTeam const&amp; rop){
CTeam asd=this;
int pointsleft=asd.......
int pointsright=rop......
if(pointsleft &lt; pointsright){
return false;
}
</code></pre>
<p>Wie benutze ich den linken Operanden richtig bzw. greife richtig auf ihn zu?</p>
<p>danke und mfg<br />
Klotz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333433/operator-lt-überladen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:22:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333433.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Jul 2015 09:52:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 09:52:32 GMT]]></title><description><![CDATA[<p>Moinsen</p>
<p>Ich habe 2 Fußballteams und möchte gucken wer mehr punkte hat.</p>
<p>Dazu soll der Operand &lt; verwendet werden.</p>
<p>Den rechten Operanden habe ich mit rop.</p>
<p>Auf den linken Operanden wollte ich zugreifen in dem ich einer neuen variable<br />
die Adresse mit &quot;this&quot; gebe.</p>
<p>kriege dann diese Fehler meldung raus:<br />
error: 'bool operator&lt;(const CTeam&amp;)' must take exactly two arguments</p>
<pre><code>bool operator &lt;(CTeam const&amp; rop){
CTeam asd=this;
int pointsleft=asd.......
int pointsright=rop......
if(pointsleft &lt; pointsright){
return false;
}
</code></pre>
<p>Wie benutze ich den linken Operanden richtig bzw. greife richtig auf ihn zu?</p>
<p>danke und mfg<br />
Klotz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458811</guid><dc:creator><![CDATA[klot]]></dc:creator><pubDate>Mon, 06 Jul 2015 09:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:03:47 GMT]]></title><description><![CDATA[<p>PS:<br />
IM UML Diagramm steht:<br />
+operator &lt;(rop:CTeam const&amp;): bool</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458812</guid><dc:creator><![CDATA[klot]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:04:49 GMT]]></title><description><![CDATA[<p>Du kannst den &lt;-Operator entweder als Memberfunktion oder als freie Funktion implementieren.</p>
<p>Bei der Membervariante bekommst hat du nur ein einziges Argument (naemlich die Rechte seite des Operators), die linke Seite bekommst du implizit ueber den 'this' Pointer:</p>
<pre><code>class Team
{
public:
    int punktezahl;
    // ...

    bool operator&lt;(const Team &amp;rhs) { return punktezahl &lt; rhs.punktezahl; }

    // ...
};
</code></pre>
<p>Bei dir sollte die Memberfunktion wohl als</p>
<pre><code>bool CTeam::operator &lt;(CTeam const&amp; rop){
</code></pre>
<p>definiert werden.</p>
<p>Bei der Variante mit der freien Funktion bekommst du zwei Argumente, die linke und die rechte Seite, da du bei einen freien Funktion kein (implizites) this Argument bekommst:</p>
<pre><code>class Team
{
public:
    int punktezahl;
    // ...
};

bool operator&lt;(const Team &amp;lhs, const Team &amp;rhs)
{
    return lhs.punktezahl &lt; rhs.punktezahl;
}
</code></pre>
<p>Alles ungetestet <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/2458814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458814</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:04:37 GMT]]></title><description><![CDATA[<p>Ist der operator&lt; bei dir Member oder eine freie Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458815</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:05:46 GMT]]></title><description><![CDATA[<p>Dein operator&lt; darf auch keine freie Funktion sein wenn du mit this den rechten Operanden haben willst. Das muss einen Memberfunktion sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458816</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:11:37 GMT]]></title><description><![CDATA[<p>erstmal danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><br />
Also da bin ich mir nicht so sicher, die Begriffe sind neu für mich.</p>
<p>Aufgabe gibt nur ein Argument vor, daher soll es wohl eine Memberfunktion sein.</p>
<p>Die Fehlermeldung sagt an das das zweite Argument fehlt, also wird es wohl als freie Funktion behandelt im Programm.</p>
<p>code wie oben,<br />
header sieht so aus:</p>
<pre><code>bool operator &lt;(CTeam const&amp; rop);
</code></pre>
<p>Wie lege ich den fest das es eine Memberfunktion ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458819</guid><dc:creator><![CDATA[klot]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:11:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:12:51 GMT]]></title><description><![CDATA[<p>sebi707 schrieb:</p>
<blockquote>
<p>Dein operator&lt; darf auch keine freie Funktion sein wenn du mit this den rechten Operanden haben willst. Das muss einen Memberfunktion sein.</p>
</blockquote>
<p>den rechten operaden habe ich ja als Argument</p>
<p>mit this will ich auf den linken operanden zugreifen, weil die Funktion mir ja sonst nichts anderes anbietet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458820</guid><dc:creator><![CDATA[klot]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:16:29 GMT]]></title><description><![CDATA[<p>klot schrieb:</p>
<blockquote>
<p>Wie lege ich den fest das es eine Memberfunktion ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Eine Memberfunktion ist innrhalb der Klasse deklariert</p>
<pre><code class="language-cpp">class MyClass
{
  public:
    void f(double d); // Member
}

void g (double d); // freie Funktion
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2458821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458821</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 10:19:39 GMT]]></title><description><![CDATA[<p>danke code läuft jetzt.</p>
<p>Also:<br />
nur ein argument-&gt; Memberfunktion -&gt; CTeam:: vor Operator, also quasi wie ne Methode implenmentieren von der syntax her</p>
<p>bei zwei wirds immer weggelassen (CTeam::)<br />
z.B. ostream&amp; operator &lt;&lt; (ostream&amp; out, CTeam const&amp; rop)</p>
<p>richtig so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458822</guid><dc:creator><![CDATA[klot]]></dc:creator><pubDate>Mon, 06 Jul 2015 10:19:39 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 12:19:18 GMT]]></title><description><![CDATA[<p>klot schrieb:</p>
<blockquote>
<p>den rechten operaden habe ich ja als Argument</p>
<p>mit this will ich auf den linken operanden zugreifen, weil die Funktion mir ja sonst nichts anderes anbietet</p>
</blockquote>
<p>Ja sorry habs erst nach dem Abschicken gesehen und als Gast kann ich das nicht mehr korrigieren.</p>
<p>klot schrieb:</p>
<blockquote>
<p>richtig so?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458830</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Mon, 06 Jul 2015 12:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operator &amp;lt; überladen on Mon, 06 Jul 2015 13:09:35 GMT]]></title><description><![CDATA[<p>klot schrieb:</p>
<blockquote>
<p>z.B. ostream&amp; operator &lt;&lt; (ostream&amp; out, CTeam const&amp; rop)</p>
</blockquote>
<p>Genau, denn man kann <code>operator&lt;&lt;(...)</code> nicht als Memberfunktion implementieren. Der Grund dafuer ist, dass</p>
<pre><code>cout &lt;&lt; deinObjekt;
</code></pre>
<p>Syntactic Sugar ist fuer</p>
<pre><code>cout.operator&lt;&lt;(deinObjekt);
</code></pre>
<p>Das heisst die Funktion wird nicht auf ein Objekt deiner Klasse aufgerufen sondern auf <code>cout</code> (dies gilt natuerlich nicht nur fuer <code>cout</code> sondern fuer einen beliebiges <code>std::ostream</code> Objekt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2458833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2458833</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Mon, 06 Jul 2015 13:09:35 GMT</pubDate></item></channel></rss>