<?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[Eigene list&amp;lt;class A&amp;gt;::sort()]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe eine Klasse (class A) die zwei Integer Variablen besitzt.<br />
Ich will mehrere Klassen in einer Liste geordent halten. In der C++ Referenz habe ich gesehen, dass die Methode &quot;sort()&quot; den &quot;&lt;&quot;-Operator benutzt. ALso habe ich den den Operator überladen.</p>
<p>Mein Code sieht in etwas wie folgt aus:</p>
<pre><code>list&lt;A&gt; liste;
liste.sort();
</code></pre>
<pre><code class="language-cpp">bool operator&lt;(A t1, A t2){ return t1.x &lt; t1.y;}
</code></pre>
<p>Jedoch bekomme ich vom Compiler die Fehlermeldung, dass der &quot;&lt;&quot;-operator zu viele Parameter besitzt.</p>
<p>Was ist daran falsch?</p>
<p>Viele Grüße<br />
sdy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276245/eigene-list-lt-class-a-gt-sort</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 11:34:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276245.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Oct 2010 15:23:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 15:23:26 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe eine Klasse (class A) die zwei Integer Variablen besitzt.<br />
Ich will mehrere Klassen in einer Liste geordent halten. In der C++ Referenz habe ich gesehen, dass die Methode &quot;sort()&quot; den &quot;&lt;&quot;-Operator benutzt. ALso habe ich den den Operator überladen.</p>
<p>Mein Code sieht in etwas wie folgt aus:</p>
<pre><code>list&lt;A&gt; liste;
liste.sort();
</code></pre>
<pre><code class="language-cpp">bool operator&lt;(A t1, A t2){ return t1.x &lt; t1.y;}
</code></pre>
<p>Jedoch bekomme ich vom Compiler die Fehlermeldung, dass der &quot;&lt;&quot;-operator zu viele Parameter besitzt.</p>
<p>Was ist daran falsch?</p>
<p>Viele Grüße<br />
sdy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972390</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Fri, 29 Oct 2010 15:23:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 15:41:04 GMT]]></title><description><![CDATA[<p>Du vergleichst dein 'this-Objekt' mit einem Parameter,<br />
folglich beötigst du nur einen Parameter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972403</guid><dc:creator><![CDATA[sorter234]]></dc:creator><pubDate>Fri, 29 Oct 2010 15:41:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:02:29 GMT]]></title><description><![CDATA[<p>hmm..ich weiß jetzt nicht, wo ich genau das this-objekt mit einem parameter vergleiche.</p>
<p>was ist denn an der Fuktion falsch? oder ist meine generelle denk-/vorgehensweise falsch?</p>
<blockquote>
<p>In the first version, taking no parameters, the comparisons are performed using the operator&lt; between the elements being compared.</p>
</blockquote>
<p><strong>b.h</strong></p>
<pre><code class="language-cpp">#include &quot;a.h&quot;

class B{
list&lt;A&gt; liste;
bool operator&lt;(A,A);

};
</code></pre>
<p><strong>b.cpp</strong></p>
<pre><code class="language-cpp">bool  B::operator&lt;(A t1, At 2){
   return t1.getX() &lt; t2.getX();
}
</code></pre>
<p>So in etwa sieht das aus. Klasse A hat zwei Eigenschaften und Klasse B verwaltet die Objekte in der Liste. Ich möchte die Liste nach dem ersten Parameter sortieren lassen. Aber wie?!</p>
<p>Kannst du mir ein Beispil geben, was ich da falsch gemacht habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972408</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:20:04 GMT]]></title><description><![CDATA[<p>sheddy schrieb:</p>
<blockquote>
<p>...<br />
<strong>b.cpp</strong></p>
<pre><code class="language-cpp">bool  B::operator&lt;(A t1, At 2){
   return t1.getX() &lt; t2.getX();
}
</code></pre>
<p>...</p>
</blockquote>
<p>Die Liste verwaltet Objekte der Klasse A - insofern sollte der Operator der Klasse A überladen werden und nicht der Klasse B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972421</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:37:46 GMT]]></title><description><![CDATA[<p>Hallo sheddy,</p>
<p>s.a. im Artikel im C++ Magazin <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">Überladung von Operatoren in C++ (Teil 1)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972431</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:39:20 GMT]]></title><description><![CDATA[<p>Alles klar. Gesagt, getan:</p>
<blockquote>
<p>error C2804: Binärer Operator '&lt;' hat zu viele Parameter</p>
</blockquote>
<p>Code:</p>
<p><strong>a.h</strong></p>
<pre><code class="language-cpp">class A{
private:
   int x;
   int y;

public:
   bool operator&lt;(A, A);
}
</code></pre>
<p><strong>a.cpp</strong></p>
<pre><code class="language-cpp">bool A::operator &lt;(A t1, At 2){
	return t1.x&lt; t2.x;
}
</code></pre>
<p>So. Wenn ich nun die in der Klasse B die sort-Funktion der Liste (Membervariable von <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> aufrufe, dann gibt er mir doe obige Fehlermeldung aus.<br />
Ich weiß wirklich nicht mehr weiter. <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/1972432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972432</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:41:30 GMT]]></title><description><![CDATA[<p>Der Fehler des Compilers kommt daher, dass Vergleichsoperatoren welche als Member einer Klasse definiert sind nur einen Parameter brauchen. Hier wird ja die Instanz vom Parameter mit der Klasse selbst verglichen (this).<br />
Vergleichsoperatoren mit zwei Parametern müssen freie Funktionen sein.<br />
also</p>
<pre><code class="language-cpp">bool  operator&lt;(const A&amp; t1, const A&amp; t2){
   return t1.getX() &lt; t2.getX();
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">bool  A::operator&lt;(const A&amp; t1){
   return getX() &lt; t1.getX();
}
</code></pre>
<p>Ich finde die erste Variante besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972433</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:41:30 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 16:54:16 GMT]]></title><description><![CDATA[<p>Danke Braunstein. Hat funktoniert! <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>Aber eine Verständnisfrage habe ich dennoch.<br />
Die sort-Funktion des Containers list&lt;&gt; benutzt den &quot;&lt;&quot;-operator. Daher muss ich den überladenen Operator frei von der Klasse machen. Das leuchtet mir irgendwie ein.</p>
<p>ABER warum vergleicht er mit sich selbst, wenn ich die Funktion als Memberfunktion der Klasse mache?<br />
Und wieso erhält die Methode nur einen Parameter? (ich denke, die antwort auf die erste frage, beantwortet dann auch die zweite frage.)</p>
<p>Wäre wirklich nett, wenn du mir das erklären oder einen Hinweis geben könntest.</p>
<p>MfG<br />
Sdy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972437</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Fri, 29 Oct 2010 16:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 17:48:23 GMT]]></title><description><![CDATA[<p>Denke dir das am besten so, dass bei einer Memberfunktion immer neben den angegebenen Parametern noch this mit übergeben wird (für dich unsichtbar).<br />
Da ein Vergleichsoperator nunmal nur zwei Parameter haben muss, muss in diesem Fall eben mit this verglichen werden.<br />
Lies mal neben den bereits angegebenen Magazin Artikel auch noch das hier durch.<br />
<a href="http://www2.math.uni-wuppertal.de/~axel/skripte/oop/oop13_0.html" rel="nofollow">http://www2.math.uni-wuppertal.de/~axel/skripte/oop/oop13_0.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972444</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 29 Oct 2010 17:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene list&amp;lt;class A&amp;gt;::sort() on Fri, 29 Oct 2010 17:06:09 GMT]]></title><description><![CDATA[<p>aaah.. ich denke mal das hier wirds sein:</p>
<p>a &lt; b</p>
<p>a.operator&lt;(b)</p>
<p>oder?!</p>
<p>jaja...3. semester irgendwann mal <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="😉"
    /> hätte ich auch selbst drauf kommen können <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="😉"
    /><br />
danke für die hilfe!! <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/1972447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972447</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Fri, 29 Oct 2010 17:06:09 GMT</pubDate></item></channel></rss>