<?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 !=]]></title><description><![CDATA[<p>Ich hab bis jetzt Java programmiert, seit kurzem schau ich mir C++ an. Beim compilieren eines Tutorials hab ich folgenden Fehler bekommen:</p>
<blockquote>
<p>c:\workspaces\visualc++\game_ai_by_example\buckland_chapter3-steering behaviors\path.h(54) : error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;' (or there is no acceptable conversion)<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]<br />
d:\programme\microsoft platform sdk for windows server 2003 r2\include\guiddef.h(197): could be 'int operator !=(const GUID &amp;,const GUID &amp;)'<br />
d:\programme\microsoft visual studio 9.0\vc\include\list(301): or 'bool std::list&lt;_Ty&gt;::_Const_iterator&lt;_Secure_validation&gt;::operator !=(const std::list&lt;_Ty&gt;::_Const_iterator&lt;_Secure_validation&gt; &amp;) const'<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]<br />
while trying to match the argument list '(const std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;, int)'<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]</p>
</blockquote>
<p>der Fehler tritt an dieser Stelle im Code auf:</p>
<pre><code class="language-cpp">Vector2D    CurrentWaypoint()const{assert(curWaypoint != NULL); return *curWaypoint;}
</code></pre>
<p>dabei ist noch zu erwähnen das curWaypoint vom Typ</p>
<pre><code class="language-cpp">std::list&lt;Vector2D&gt;::iterator  curWaypoint;
</code></pre>
<p>ist.</p>
<p>nun würde ich gerne wissen, wieso diese Codezeile einen Fehler gibt. Da mir nicht klar ist, wie ich die Variable sonst auf einen Nullpointer überprüfen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204212/operator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 03:02:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204212.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Jan 2008 12:03:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator != on Thu, 31 Jan 2008 12:03:26 GMT]]></title><description><![CDATA[<p>Ich hab bis jetzt Java programmiert, seit kurzem schau ich mir C++ an. Beim compilieren eines Tutorials hab ich folgenden Fehler bekommen:</p>
<blockquote>
<p>c:\workspaces\visualc++\game_ai_by_example\buckland_chapter3-steering behaviors\path.h(54) : error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;' (or there is no acceptable conversion)<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]<br />
d:\programme\microsoft platform sdk for windows server 2003 r2\include\guiddef.h(197): could be 'int operator !=(const GUID &amp;,const GUID &amp;)'<br />
d:\programme\microsoft visual studio 9.0\vc\include\list(301): or 'bool std::list&lt;_Ty&gt;::_Const_iterator&lt;_Secure_validation&gt;::operator !=(const std::list&lt;_Ty&gt;::_Const_iterator&lt;_Secure_validation&gt; &amp;) const'<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]<br />
while trying to match the argument list '(const std::list&lt;_Ty&gt;::_Iterator&lt;_Secure_validation&gt;, int)'<br />
with<br />
[<br />
_Ty=Vector2D,<br />
_Secure_validation=true<br />
]</p>
</blockquote>
<p>der Fehler tritt an dieser Stelle im Code auf:</p>
<pre><code class="language-cpp">Vector2D    CurrentWaypoint()const{assert(curWaypoint != NULL); return *curWaypoint;}
</code></pre>
<p>dabei ist noch zu erwähnen das curWaypoint vom Typ</p>
<pre><code class="language-cpp">std::list&lt;Vector2D&gt;::iterator  curWaypoint;
</code></pre>
<p>ist.</p>
<p>nun würde ich gerne wissen, wieso diese Codezeile einen Fehler gibt. Da mir nicht klar ist, wie ich die Variable sonst auf einen Nullpointer überprüfen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1446900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1446900</guid><dc:creator><![CDATA[Deshwitat]]></dc:creator><pubDate>Thu, 31 Jan 2008 12:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to Operator != on Fri, 01 Feb 2008 01:10:40 GMT]]></title><description><![CDATA[<p>Da es kein Zeiger ist kannst du es auch nicht auf einen Null-Zeiger testen.<br />
Ein Iterator ist eben ein Iterator.<br />
In C++ gibt es keine allgemeine Möglichkeit einen Iterator auf Gültigkeit zu prüfen.<br />
Wenn du etwas brauchst was explizit &quot;NULL&quot; gesetzt werden kann, und wenn es nicht NULL ist einen Iterator halten, dann nimm boost::optional&lt;std::list&lt;Vector2D&gt;::iterator&gt;.</p>
<p>Und wenn es dir nur auf das &quot;assert&quot; ankommt, dann schmeiss das assert() einfach raus, und verwende eine STL Implementierung mit &quot;iterator debugging&quot;. Die vom MSVC 2005 kann das z.B.<br />
Die Iteratoren checken dann automatisch intern ob sie gültig sind, bei jedem Zugriff. Macht allerdings auch nur zu Debugging-Zwecken Sinn, man sollte NIE Code schreiben der sich darauf verlässt. (Unabhängig davon ob man die Checks dann im Release-Mode drinnen lässt oder nicht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1447356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1447356</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 01 Feb 2008 01:10:40 GMT</pubDate></item></channel></rss>