<?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[welcher operator bei set &amp;lt;myclass*&amp;gt;]]></title><description><![CDATA[<p>Hi,</p>
<p>ich verwende ein set um zeiger auf objekte zu verwalten, weiß aber nicht welchen operator ich überladen muß. hier ein beispielcode der nicht so funktioniert wie ich erwartet hätte:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;set&gt;

using namespace std;

class Test
{
public:
	int operator&lt;(const Test &amp;rhs) {cout &lt;&lt; &quot; &lt; &quot; &lt;&lt; endl; return true;};
	int i;

private:
};

bool operator&lt; (const Test&amp; t1, const Test&amp; t2)
{
	cout &lt;&lt; t1.i &lt;&lt; &quot; &lt; &quot; &lt;&lt; t2.i &lt;&lt; endl;
	return t1.i &lt; t2.i;
}

int _tmain(int argc, _TCHAR* argv[])
{
	Test	temp1, temp2;

	cout &lt;&lt; &quot;mit Zeigern&quot; &lt;&lt; endl;
	set&lt;Test*&gt; myset;
	myset.insert(&amp;temp1);
	myset.insert(&amp;temp2);

	cout &lt;&lt; &quot;mit Objekten&quot; &lt;&lt; endl;
	set&lt;Test&gt; myset2;
	myset2.insert(temp1);
	myset2.insert(temp2);
}
</code></pre>
<p>wo liegt mein denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160228/welcher-operator-bei-set-lt-myclass-gt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 05:13:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160228.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Sep 2006 12:49:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to welcher operator bei set &amp;lt;myclass*&amp;gt; on Sat, 23 Sep 2006 12:49:59 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich verwende ein set um zeiger auf objekte zu verwalten, weiß aber nicht welchen operator ich überladen muß. hier ein beispielcode der nicht so funktioniert wie ich erwartet hätte:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;set&gt;

using namespace std;

class Test
{
public:
	int operator&lt;(const Test &amp;rhs) {cout &lt;&lt; &quot; &lt; &quot; &lt;&lt; endl; return true;};
	int i;

private:
};

bool operator&lt; (const Test&amp; t1, const Test&amp; t2)
{
	cout &lt;&lt; t1.i &lt;&lt; &quot; &lt; &quot; &lt;&lt; t2.i &lt;&lt; endl;
	return t1.i &lt; t2.i;
}

int _tmain(int argc, _TCHAR* argv[])
{
	Test	temp1, temp2;

	cout &lt;&lt; &quot;mit Zeigern&quot; &lt;&lt; endl;
	set&lt;Test*&gt; myset;
	myset.insert(&amp;temp1);
	myset.insert(&amp;temp2);

	cout &lt;&lt; &quot;mit Objekten&quot; &lt;&lt; endl;
	set&lt;Test&gt; myset2;
	myset2.insert(temp1);
	myset2.insert(temp2);
}
</code></pre>
<p>wo liegt mein denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143058</guid><dc:creator><![CDATA[dust]]></dc:creator><pubDate>Sat, 23 Sep 2006 12:49:59 GMT</pubDate></item><item><title><![CDATA[Reply to welcher operator bei set &amp;lt;myclass*&amp;gt; on Sat, 23 Sep 2006 13:32:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool operator&lt; (const Test *t1, const Test *t2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1143074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143074</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to welcher operator bei set &amp;lt;myclass*&amp;gt; on Sat, 23 Sep 2006 13:40:54 GMT]]></title><description><![CDATA[<p>Z2 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bool operator&lt; (const Test *t1, const Test *t2);
</code></pre>
</blockquote>
<p>Hübsch, aber leider kein C++. In C++ muss ein überladener Operator mindestens ein Argument vom Typ enum oder udt haben. Du hast hier aber zwei Zeiger.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14599">@dust</a><br />
In diesem Fall bietet sich ein Comparator-Objekt an:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
#include &lt;set&gt;

using namespace std;

class Test {
public:
   int i;
};

bool operator&lt; (const Test&amp; t1, const Test&amp; t2) {
  cout &lt;&lt; t1.i &lt;&lt; &quot; &lt; &quot; &lt;&lt; t2.i &lt;&lt; endl;
  return t1.i &lt; t2.i;
}

struct DerefLess {
  template &lt;class T&gt;
  bool operator()(T* lhs, T* rhs) const {
    return *lhs &lt; *rhs;
  }
};

int main() {
  Test    temp1, temp2;

  cout &lt;&lt; &quot;mit Zeigern&quot; &lt;&lt; endl;
  set&lt;Test*, DerefLess&gt; myset;
  myset.insert(&amp;temp1);
  myset.insert(&amp;temp2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1143079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143079</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 23 Sep 2006 13:40:54 GMT</pubDate></item><item><title><![CDATA[Reply to welcher operator bei set &amp;lt;myclass*&amp;gt; on Sat, 23 Sep 2006 16:42:35 GMT]]></title><description><![CDATA[<p>Ups, wie peinlich. Kommt davon, wenn man immer nur Funktoren anstattt Funktionen verwendet <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/1143151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143151</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 23 Sep 2006 16:42:35 GMT</pubDate></item><item><title><![CDATA[Reply to welcher operator bei set &amp;lt;myclass*&amp;gt; on Sun, 24 Sep 2006 09:58:49 GMT]]></title><description><![CDATA[<p>danke, hat mir sehr geholfen <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/1143374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143374</guid><dc:creator><![CDATA[dust]]></dc:creator><pubDate>Sun, 24 Sep 2006 09:58:49 GMT</pubDate></item></channel></rss>