<?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[[gelöst] Vergleichsoperator für std::map mit std::string selbst definieren?]]></title><description><![CDATA[<p>Hallo.<br />
Möchte mir gerne einen Vergleichsoperator für folgende Ausprägung von std::map haben:</p>
<pre><code class="language-cpp">std::map&lt;std::string, LPDIRECT3DSURFACE9&gt; m_Surfaces;
</code></pre>
<p>Da der Schlüssel der Map-Einträge ein std::string ist, müsste er es doch eigentlich selber können, so dass ich keinen eigenen Operator definieren muss, oder? Oder vergleicht er immer das Paar?</p>
<pre><code class="language-cpp">inline bool operator &lt; (const std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; left, const std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; right)
</code></pre>
<p>Irgendwie klappt das alles nicht..<br />
Wenn ich keinen Operator definiere, sagt er mir folgendes:</p>
<blockquote>
<p>1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\functional(142): Bei der Kompilierung der Klassen-template der bool std::less&lt;_Ty&gt;::operator ()(const _Ty &amp;,const _Ty &amp;) const-Memberfunktion<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty=std::string<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\map(68): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::less&lt;_Ty&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty=std::string<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(22): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tmap_traits&lt;_Kty,_Ty,_Pr,_Alloc,_Mfl&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=LPDIRECT3DSURFACE9 ,<br />
1&gt; _Pr=std::less<a href="std::string" rel="nofollow">std::string</a>,<br />
1&gt; _Alloc=std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,<br />
1&gt; _Mfl=false<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(63): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_nod&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(89): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_ptr&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(107): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_val&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\map(78): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\projekte\2d-engine\2d-engine\renderer.h(52): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::map&lt;_Kty,_Ty&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=LPDIRECT3DSURFACE9<br />
1&gt; ]<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2676: Binärer Operator '&lt;': 'const std::string' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht</p>
</blockquote>
<p>Falls ich den Operator definiere mit</p>
<pre><code class="language-cpp">inline bool operator &lt; (std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; left, std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; right)
{
	return (left.first &lt; right.first);
}
</code></pre>
<p>dann sagt er mir folgendes:</p>
<blockquote>
<p>1&gt;c:\projekte\2d-engine\2d-engine\renderer.cpp(121) : error C2678: Binärer Operator '&lt;': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)<br />
1&gt; c:\projekte\2d-engine\2d-engine\renderer.cpp(119): kann 'bool operator &lt;(std::pair&lt;_Ty1,_Ty2&gt; &amp;,std::pair&lt;_Ty1,_Ty2&gt; &amp;)' sein<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty1=std::string,<br />
1&gt; _Ty2=LPDIRECT3DDEVICE9<br />
1&gt; ]<br />
1&gt; bei Anpassung der Argumentliste '(std::string, std::string)'</p>
</blockquote>
<p>Wo liegt mein Fehler?</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235865/gelöst-vergleichsoperator-für-std-map-mit-std-string-selbst-definieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:07:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235865.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Mar 2009 15:55:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Vergleichsoperator für std::map mit std::string selbst definieren? on Sat, 07 Mar 2009 16:49:57 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Möchte mir gerne einen Vergleichsoperator für folgende Ausprägung von std::map haben:</p>
<pre><code class="language-cpp">std::map&lt;std::string, LPDIRECT3DSURFACE9&gt; m_Surfaces;
</code></pre>
<p>Da der Schlüssel der Map-Einträge ein std::string ist, müsste er es doch eigentlich selber können, so dass ich keinen eigenen Operator definieren muss, oder? Oder vergleicht er immer das Paar?</p>
<pre><code class="language-cpp">inline bool operator &lt; (const std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; left, const std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; right)
</code></pre>
<p>Irgendwie klappt das alles nicht..<br />
Wenn ich keinen Operator definiere, sagt er mir folgendes:</p>
<blockquote>
<p>1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\functional(142): Bei der Kompilierung der Klassen-template der bool std::less&lt;_Ty&gt;::operator ()(const _Ty &amp;,const _Ty &amp;) const-Memberfunktion<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty=std::string<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\map(68): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::less&lt;_Ty&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty=std::string<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(22): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tmap_traits&lt;_Kty,_Ty,_Pr,_Alloc,_Mfl&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=LPDIRECT3DSURFACE9 ,<br />
1&gt; _Pr=std::less<a href="std::string" rel="nofollow">std::string</a>,<br />
1&gt; _Alloc=std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,<br />
1&gt; _Mfl=false<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(63): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_nod&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(89): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_ptr&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(107): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree_val&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\map(78): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::_Tree&lt;_Traits&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Traits=std::_Tmap_traits&lt;std::string,LPDIRECT3DSURFACE9 ,std::less<a href="std::string" rel="nofollow">std::string</a>,std::allocator&lt;std::pair&lt;const std::string,LPDIRECT3DSURFACE9 &gt;&gt;,false&gt;<br />
1&gt; ]<br />
1&gt; c:\projekte\2d-engine\2d-engine\renderer.h(52): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::map&lt;_Kty,_Ty&gt;&quot;.<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=LPDIRECT3DSURFACE9<br />
1&gt; ]<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Tree&lt;_Traits&gt; &amp;,const std::_Tree&lt;_Traits&gt; &amp;)&quot;: template-Argument für &quot;const std::_Tree&lt;_Traits&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xtree(1466): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::reverse_iterator&lt;_RanIt&gt; &amp;,const std::reverse_iterator&lt;_RanIt2&gt; &amp;)&quot;: template-Argument für &quot;const std::reverse_iterator&lt;_RanIt&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2236): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::_Revranit&lt;_RanIt,_Base&gt; &amp;,const std::_Revranit&lt;_RanIt2,_Base2&gt; &amp;)&quot;: template-Argument für &quot;const std::_Revranit&lt;_RanIt,_Base&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\xutility(2046): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2784: &quot;bool std::operator &lt;(const std::pair&lt;_Ty1,_Ty2&gt; &amp;,const std::pair&lt;_Ty1,_Ty2&gt; &amp;)&quot;: template-Argument für &quot;const std::pair&lt;_Ty1,_Ty2&gt; &amp;&quot; konnte nicht von &quot;const std::string&quot; hergeleitet werden.<br />
1&gt; c:\programme\microsoft visual studio 9.0\vc\include\utility(84): Siehe Deklaration von 'std::operator &lt;'<br />
1&gt;c:\programme\microsoft visual studio 9.0\vc\include\functional(143) : error C2676: Binärer Operator '&lt;': 'const std::string' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht</p>
</blockquote>
<p>Falls ich den Operator definiere mit</p>
<pre><code class="language-cpp">inline bool operator &lt; (std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; left, std::pair&lt;std::string,LPDIRECT3DDEVICE9&gt;&amp; right)
{
	return (left.first &lt; right.first);
}
</code></pre>
<p>dann sagt er mir folgendes:</p>
<blockquote>
<p>1&gt;c:\projekte\2d-engine\2d-engine\renderer.cpp(121) : error C2678: Binärer Operator '&lt;': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)<br />
1&gt; c:\projekte\2d-engine\2d-engine\renderer.cpp(119): kann 'bool operator &lt;(std::pair&lt;_Ty1,_Ty2&gt; &amp;,std::pair&lt;_Ty1,_Ty2&gt; &amp;)' sein<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty1=std::string,<br />
1&gt; _Ty2=LPDIRECT3DDEVICE9<br />
1&gt; ]<br />
1&gt; bei Anpassung der Argumentliste '(std::string, std::string)'</p>
</blockquote>
<p>Wo liegt mein Fehler?</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675767</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Sat, 07 Mar 2009 16:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Vergleichsoperator für std::map mit std::string selbst definieren? on Sat, 07 Mar 2009 16:08:56 GMT]]></title><description><![CDATA[<p>Den Fehler kann man ganz einfach reproduzieren <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>
<pre><code class="language-cpp">#include &lt;map&gt;

int main()
{
  std::map&lt;std::string, int&gt; map;
  map[&quot;hello&quot;] = 3;

  return 0;
}
</code></pre>
<p>Fällt dir was auf im Bereich der includes? <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675770</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 07 Mar 2009 16:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Vergleichsoperator für std::map mit std::string selbst definieren? on Sat, 07 Mar 2009 16:47:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt;
</code></pre>
<p>....</p>
<p>Dachte ich hätte es drin, weil ich ja schon Variablen vom Type std::string definieren konnte..<br />
Danke!</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675778</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Sat, 07 Mar 2009 16:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Vergleichsoperator für std::map mit std::string selbst definieren? on Sat, 07 Mar 2009 18:22:20 GMT]]></title><description><![CDATA[<p>Hundefutter schrieb:</p>
<blockquote>
<p>Dachte ich hätte es drin, weil ich ja schon Variablen vom Type std::string definieren konnte..</p>
</blockquote>
<p>Es kann sein, dass die Klasse <code>std::string</code> über andere Header inkludiert wird. Aber um die volle Funktionalität zu nutzen, brauchst du den Header <code>&lt;string&gt;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675804</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 07 Mar 2009 18:22:20 GMT</pubDate></item></channel></rss>