<?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[Frage zu einem Konstrukt]]></title><description><![CDATA[<p>Nabend die Gemeinde,</p>
<p>folgendes Konstrukt liegt vor</p>
<pre><code class="language-cpp">Tracer::~Tracer()
{
    std::vector&lt;Tracer*&gt;::iterator pos = tracervec.begin();

    while(pos != tracervec.end() &amp;&amp; *pos != this)
    {
        ++pos;
    }
    if(pos == tracervec.end())
    {
        tracedatei &lt;&lt;&quot;Abbruch! 'delete' auf nicht-existentes Objekt&quot;&lt;&lt;std::endl;
        tracedatei.close();
        exit(2);
    }

... //Stark vereinfacht
}
</code></pre>
<p>meine FRage bezieht sich auf diese Zeile</p>
<pre><code class="language-cpp">while(pos != tracervec.end() &amp;&amp; *pos != this)
</code></pre>
<p>Wieso kann ich hier einen Derefernzierten Iterator mit einem Obejekt vergleichen? Warum muss es nicht</p>
<pre><code class="language-cpp">pos != this
</code></pre>
<p>heißen?<br />
Den Code habe ich Teilweise aus meinem Buch(Ulrich Breymann)</p>
<p>Kann mir einer auf die Sprünge helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218342/frage-zu-einem-konstrukt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 06:29:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218342.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Jul 2008 16:41:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 16:41:55 GMT]]></title><description><![CDATA[<p>Nabend die Gemeinde,</p>
<p>folgendes Konstrukt liegt vor</p>
<pre><code class="language-cpp">Tracer::~Tracer()
{
    std::vector&lt;Tracer*&gt;::iterator pos = tracervec.begin();

    while(pos != tracervec.end() &amp;&amp; *pos != this)
    {
        ++pos;
    }
    if(pos == tracervec.end())
    {
        tracedatei &lt;&lt;&quot;Abbruch! 'delete' auf nicht-existentes Objekt&quot;&lt;&lt;std::endl;
        tracedatei.close();
        exit(2);
    }

... //Stark vereinfacht
}
</code></pre>
<p>meine FRage bezieht sich auf diese Zeile</p>
<pre><code class="language-cpp">while(pos != tracervec.end() &amp;&amp; *pos != this)
</code></pre>
<p>Wieso kann ich hier einen Derefernzierten Iterator mit einem Obejekt vergleichen? Warum muss es nicht</p>
<pre><code class="language-cpp">pos != this
</code></pre>
<p>heißen?<br />
Den Code habe ich Teilweise aus meinem Buch(Ulrich Breymann)</p>
<p>Kann mir einer auf die Sprünge helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1549856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549856</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 19 Jul 2008 16:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 16:52:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;Tracer*&gt;::iterator pos = tracervec.begin();
</code></pre>
<p>pos ist ein iterator, der auf einen vektor aus Tracer* zeigt. Wenn du den iterator dann dereferenzierst, kommst du an den Inhalt, wo der iterator drauf zeigt, also Tracer*. Das kannst du dann auch mit this vergleichen <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/1549860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549860</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 19 Jul 2008 16:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 17:34:40 GMT]]></title><description><![CDATA[<p>achso stimmt ja, ist ja ein Tracer* und kein normaler Tracer. Alles klar das sollte das Problem klären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1549874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549874</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 19 Jul 2008 17:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 17:50:18 GMT]]></title><description><![CDATA[<p>Heißt das wenn ich anstatt</p>
<pre><code class="language-cpp">std::vector&lt;Tracer*&gt;::iterator pos = tracervec.begin();
</code></pre>
<p>das hier schreiben</p>
<pre><code class="language-cpp">std::vector&lt;Tracer&gt;::iterator pos = tracervec.begin();
</code></pre>
<p>könnte/müsste ich so vergleichen</p>
<pre><code class="language-cpp">while(pos != tracervec.end() &amp;&amp; pos != this)
    {
        ++pos;
    }
</code></pre>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1549879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549879</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 19 Jul 2008 17:50:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 18:35:49 GMT]]></title><description><![CDATA[<p>Nein das geht nicht, weil dann Kopien in dem vector gespeichert werden.<br />
Müßte dann</p>
<pre><code class="language-cpp">*this != *pos
</code></pre>
<p>heißen.<br />
Dann werden die Inhalte verglichen mit dem != operator der Klasse Tracer (sofern vorhanden, sonst gibt es einen compiler Fehler)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1549898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549898</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Sat, 19 Jul 2008 18:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu einem Konstrukt on Sat, 19 Jul 2008 18:37:58 GMT]]></title><description><![CDATA[<p>Nein, <em>pos</em> ist weiterhin der Iterator, den brauchst du mit nichts zu vergleichen. Das Objekt ist diesmal nur <strong>Tracer</strong> und nicht Tracer*. Da <em>this</em> aber Tracer* ist, müsstest du so vergleichen, in dem du this (Tracer*) auf *this (<strong>Tracer</strong>) dereferenzierst:</p>
<pre><code class="language-cpp">while(pos != tracervec.end() &amp;&amp; pos != *this)
</code></pre>
<p>Edit: Mist, zu spät. <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/1549899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1549899</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Sat, 19 Jul 2008 18:37:58 GMT</pubDate></item></channel></rss>