<?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[Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort]]></title><description><![CDATA[<p>Ich möchte einen Vector aus Studentenobjekten (bzw. aus Pointern auf Studentenobjekten) nach der zueletzt erreichten Note sortieren. Aus Übungszwecken wollte ich das mit der Funktion sort aus der &lt;algortihm&gt; machen.</p>
<p>Hab dazu folgende Funktionen erstellt.</p>
<pre><code>bool OBS::compareLastNote(Student* stud1, Student* stud2)
{
    if (stud1-&gt;getLastNote() &lt; stud2-&gt;getLastNote())
    {
        return true;
    }
    else
        return false;
}

void OBS::sortieren()
{
    std::sort (allStudents_.begin(),allStudents_.end(),compareLastNote);

}
</code></pre>
<p>In der OBS.h ist der vector wie folgt deklariert:</p>
<pre><code>std::vector &lt;Student*&gt; allStudents_;
</code></pre>
<p>Nun bekomme ich aber folgende Fehlermeldung:</p>
<p>OBS.cpp:83:71: error: argument of type ‘bool (OBS::)(Student*, Student*)’ does not match ‘bool (OBS::<em>)(Student</em>, Student*)’</p>
<p>Die verstehe ich nicht, wäre super wenn mmir da jemand helfen könnte.<br />
Schon mal Danke <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/topic/313630/fehlermeldung-bei-lt-algorithm-gt-sort</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 03:54:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313630.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Feb 2013 13:16:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:16:08 GMT]]></title><description><![CDATA[<p>Ich möchte einen Vector aus Studentenobjekten (bzw. aus Pointern auf Studentenobjekten) nach der zueletzt erreichten Note sortieren. Aus Übungszwecken wollte ich das mit der Funktion sort aus der &lt;algortihm&gt; machen.</p>
<p>Hab dazu folgende Funktionen erstellt.</p>
<pre><code>bool OBS::compareLastNote(Student* stud1, Student* stud2)
{
    if (stud1-&gt;getLastNote() &lt; stud2-&gt;getLastNote())
    {
        return true;
    }
    else
        return false;
}

void OBS::sortieren()
{
    std::sort (allStudents_.begin(),allStudents_.end(),compareLastNote);

}
</code></pre>
<p>In der OBS.h ist der vector wie folgt deklariert:</p>
<pre><code>std::vector &lt;Student*&gt; allStudents_;
</code></pre>
<p>Nun bekomme ich aber folgende Fehlermeldung:</p>
<p>OBS.cpp:83:71: error: argument of type ‘bool (OBS::)(Student*, Student*)’ does not match ‘bool (OBS::<em>)(Student</em>, Student*)’</p>
<p>Die verstehe ich nicht, wäre super wenn mmir da jemand helfen könnte.<br />
Schon mal Danke <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/2296449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296449</guid><dc:creator><![CDATA[green_banana]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:20:12 GMT]]></title><description><![CDATA[<p>Leg die Vergleichsfunktion als freie Funktion an. Im Moment ist sie eine Member-Funktion, das geht nicht so ohne weiteres, weil Zeiger auf Funktionen was anderes sind als Zeiger auf Member-Funktionen.</p>
<p>btw.</p>
<pre><code>if(a&lt;b) 
  return true; 
else
  return false;
</code></pre>
<p>lässt sich kürzer schreiben als</p>
<pre><code>return a&lt;b;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2296450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296450</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:26:42 GMT]]></title><description><![CDATA[<p>Ist compareLastNote eine <em>statische</em> Elementfunktion? Wenn nein: Warum nicht?</p>
<p>Das Ding ist, dass du eine nicht-statische Elementfunktion ja nur auf einem bestimmten Objekt aufrufen kannst. Und woher soll std::sort das nehmen? Die Aufrufsyntax über einen Methoden-Zeiger ist auch eine andere:</p>
<pre><code>(einObjekt.*MethodenZeiger)(parameter1,parameter2);
</code></pre>
<p>oder</p>
<pre><code>(objektZeiger-&gt;*MethodenZeiger)(parameter1,parameter2);
</code></pre>
<p>std::sort will etwas, was man so aufrufen kann:</p>
<pre><code>etwas(parameter1,parameter2)
</code></pre>
<p>und das kann dann ein &quot;normaler&quot; Funktionzeiger sein, oder ein Funktionsobjekt mit überladenden Funktionsaufrufoperator.</p>
<p>Wenn du noch das Denglisch durch Englisch ersetzen willst, würde ich &quot;Grade&quot; oder &quot;Mark&quot; statt &quot;Note&quot; schreiben. <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/2296451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296451</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:40:07 GMT]]></title><description><![CDATA[<p>Also wenn ich die Funktion aus der Klasse rausnehme also so.</p>
<pre><code>bool compareLastNote(Student* stud1, Student* stud2)
{
   return stud1-&gt;getLastNote()&lt;stud2-&gt;getLastNote();
}

class OBS {
public:

//Hier inhalt

private:
//hier auch
};
</code></pre>
<p>Bekomme ich folgende Fehlermeldung:**</p>
<p>build/Debug/Cygwin_4.x-Windows/OBS.o: In function <code>new\_allocator': /cygdrive/f/Eigene Dokumente/NetBeansProjects/Schmitt_Uebungsklausur/OBS.h:16: multiple definition of</code>compareLastNote(Student*, Student*)'...**</p>
<p>Aber ich habe m.E. nach keine mehrfachen defenitionen der Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296456</guid><dc:creator><![CDATA[green_banana]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:43:25 GMT]]></title><description><![CDATA[<p>verschiebe den Funktionsrumpf mal in die cpp, so dass in der Header nur noch die Deklaration steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296457</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:43:25 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:43:57 GMT]]></title><description><![CDATA[<p>Oder schreib inline davor...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296458</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:43:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 13:45:49 GMT]]></title><description><![CDATA[<p>Wenn ich die funtkion static mache funzt es, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296460</guid><dc:creator><![CDATA[green_banana]]></dc:creator><pubDate>Wed, 06 Feb 2013 13:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 14:11:00 GMT]]></title><description><![CDATA[<p>green_banana schrieb:</p>
<blockquote>
<p>Wenn ich die funtkion static mache funzt es, danke.</p>
</blockquote>
<p>Weißt du denn auch warum?!</p>
<p>Tipps:</p>
<ul>
<li>Siehe &quot;one definition rule&quot; (ODR)</li>
<li>Auch wenn du etwas in nur einer einzigen Datei definierst, kannst du trotzdem die ODR verletzen, wenn du so eine Definition per #include in mehrere Übersetzungseinheiten reinpackst. #include macht ja nur copy-&amp;-paste von Text!</li>
<li>Funktionen, die innerhalb von Klassen/Struct-Definitionen definiert werden, sind automatisch inline. Und für inline-Funktionen gibt's Sonderregeln bei der ODR.</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/2296467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296467</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 06 Feb 2013 14:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung bei &amp;lt;algorithm&amp;gt; sort on Wed, 06 Feb 2013 14:20:43 GMT]]></title><description><![CDATA[<p>Bin gerade noch dabie das richtig zu verstehen.<br />
Danke für den Hinweis werde mir das jetzt mal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2296471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2296471</guid><dc:creator><![CDATA[green_banana]]></dc:creator><pubDate>Wed, 06 Feb 2013 14:20:43 GMT</pubDate></item></channel></rss>