<?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[Konstante Referenz wird ungültig?!]]></title><description><![CDATA[<p>Hi,</p>
<p>habe ein Problem mit folgendem Code:<br />
<a href="http://pastebin.com/9gNVpjMP" rel="nofollow">http://pastebin.com/9gNVpjMP</a></p>
<p>Mittels Debugging habe ich herausgefunden, dass beim ersten Aufrufen der Funktion &quot;branchPath&quot; der als konstanten Referenz übergebene &quot;Path&quot; undefiniert wird.<br />
Ich habe keine Erklärung dafür. Nach dem ersten Erzeugen eines neuen Pfades verliert das Objekt offenbar seinen definierten Wert.</p>
<p>D.h.</p>
<pre><code>void branchPath(const Path&amp; path, std::vector&lt;Path&gt;&amp; alive_path)
{
    Point position = path.m_path.back();
    for(auto&amp; dir: direction){
        Point p = position + dir;
        if(field[Coord2Vec(position + dir)] == 0 and dir != path.m_dir){
            Path new_path(position, path.m_path, dir);
            alive_path.push_back(new_path);
        }
    }
}
</code></pre>
<p>&quot;path&quot; scheint &quot;ungültig&quot; zu werden. Wie kann das sein und was kann ich dagegeben tun?!</p>
<p>Vielen Dank für jede Hilfe, in diesem Fall habe ich wirklich keine Ahnung wo der Fehler liegen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337057/konstante-referenz-wird-ungültig</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 15:14:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337057.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Mar 2016 07:53:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Sat, 05 Mar 2016 07:53:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>habe ein Problem mit folgendem Code:<br />
<a href="http://pastebin.com/9gNVpjMP" rel="nofollow">http://pastebin.com/9gNVpjMP</a></p>
<p>Mittels Debugging habe ich herausgefunden, dass beim ersten Aufrufen der Funktion &quot;branchPath&quot; der als konstanten Referenz übergebene &quot;Path&quot; undefiniert wird.<br />
Ich habe keine Erklärung dafür. Nach dem ersten Erzeugen eines neuen Pfades verliert das Objekt offenbar seinen definierten Wert.</p>
<p>D.h.</p>
<pre><code>void branchPath(const Path&amp; path, std::vector&lt;Path&gt;&amp; alive_path)
{
    Point position = path.m_path.back();
    for(auto&amp; dir: direction){
        Point p = position + dir;
        if(field[Coord2Vec(position + dir)] == 0 and dir != path.m_dir){
            Path new_path(position, path.m_path, dir);
            alive_path.push_back(new_path);
        }
    }
}
</code></pre>
<p>&quot;path&quot; scheint &quot;ungültig&quot; zu werden. Wie kann das sein und was kann ich dagegeben tun?!</p>
<p>Vielen Dank für jede Hilfe, in diesem Fall habe ich wirklich keine Ahnung wo der Fehler liegen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489372</guid><dc:creator><![CDATA[kingcools]]></dc:creator><pubDate>Sat, 05 Mar 2016 07:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Sat, 05 Mar 2016 08:05:23 GMT]]></title><description><![CDATA[<p>beim zufügen an einen std::vector werden alle iteratoren, zeiger und Referenzen auf dessen elemente ungültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489373</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Sat, 05 Mar 2016 08:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Sat, 05 Mar 2016 08:16:56 GMT]]></title><description><![CDATA[<p>roflo schrieb:</p>
<blockquote>
<p>beim zufügen an einen std::vector werden alle iteratoren, zeiger und Referenzen auf dessen elemente ungültig.</p>
</blockquote>
<p>Noch als Zugabe der Hinweis, dass sie trotz Einfügens garantiert gültig bleiben, sofern Size &lt; Capacity. Das heißt, mittels vorherigem reserve kann man sicher stellen, dass das nicht passiert (Natürlich macht dafür das reserve selber alles kaputt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489374</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 05 Mar 2016 08:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Sat, 05 Mar 2016 14:41:29 GMT]]></title><description><![CDATA[<p>Und wie so oft fühl ich mich nach euren Antworten doof, haha.</p>
<p>Vielen Dank <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="🙂"
    /><br />
Jetzt wo ihr es sagt ist es offensichtlich, aber ich hatte &quot;const &amp;&quot; als &quot;sicher&quot; in meinem Kopf abgespeichert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489408</guid><dc:creator><![CDATA[kingcools]]></dc:creator><pubDate>Sat, 05 Mar 2016 14:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Mon, 07 Mar 2016 18:26:07 GMT]]></title><description><![CDATA[<p>kingcools schrieb:</p>
<blockquote>
<p>Und wie so oft fühl ich mich nach euren Antworten doof, haha.</p>
</blockquote>
<p>Musst Du nicht.</p>
<p>kingcools schrieb:</p>
<blockquote>
<p>Jetzt wo ihr es sagt ist es offensichtlich, aber ich hatte &quot;const &amp;&quot; als &quot;sicher&quot; in meinem Kopf abgespeichert.</p>
</blockquote>
<p>C++ ist nicht speichersicher. Man muss sich immer Gedanken dazu machen, worauf sich ein roher Zeiger oder eine Referenz bezieht und wie lange das, worauf sich der Zeiger/die Referenz bezieht, gültig ist. Die sind ja nicht &quot;besitzend&quot; sondern nur &quot;ausleihend&quot;. <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>
<p>Es gibt in diesem Fall noch eine Alternative: Mit <code>std::deque</code> geht sowas. <code>std::deque</code> macht die Garantie, dass wenn man ganz am Anfang oder ganz am Ende ein neues Element einfügt, die Referenzen alle noch gültig bleiben. Nur die Iteratoren werden ungültig. Und wenn man irgendwo in der Mitte einfügt, dann werden die Referenzen auch noch ungültig. Aber dafür bietet die <code>deque</code> eben noch den schnellen Zugriff (random access).</p>
<p>Mit der Programmiersprache Rust wär' das jetzt nicht passiert. Der Compiler hätte dich davon abgehalten, den Vektor zu verändern, solange der wegen einer einer Referenz auf eines seiner Elemente als &quot;ausgeliehen&quot; gilt. <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>
<p>SCNR!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489618</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 07 Mar 2016 18:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz wird ungültig?! on Mon, 07 Mar 2016 18:50:05 GMT]]></title><description><![CDATA[<blockquote>
<p>C++ ist nicht speichersicher. Man muss sich immer Gedanken dazu machen, worauf sich ein roher Zeiger oder eine Referenz bezieht</p>
</blockquote>
<p>Muss man das? Ich kann mich nicht erinnern jemals lange darüber nachgedacht zu haben, und auch nur selten kurz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2489624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2489624</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 07 Mar 2016 18:50:05 GMT</pubDate></item></channel></rss>