<?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[Geloeschtes Vektor Element zurueckgeben]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe einen Vektor mit Foo Objekten.</p>
<p>Jetzt habe ich eine Methode, die random ein Foo Objekt liefern soll. Jedes Foo Objekt hat ferner einen Zaehler num (startet bei 0). Es soll nur ein Foo Objekt geliefert werden, solange Foo::num &lt; Foo::totalNum.</p>
<p>Die Methode sieht so aus:</p>
<pre><code class="language-cpp">const Foo&amp; FooManager::getRandomFoo() const {
   int index = rand() % mFoos.size();
   mFoos[index].num++;

   if(mFoos[index].num &gt;= mFoos[index].totalNum)
	mFoos.erase(mDecals.begin() + index);

 return mFoos[index];
}
</code></pre>
<p>Wie ihr seht wird das Foo Objekt geloescht, wenn num totalNum erreicht hat. Meine Fragen:</p>
<ol>
<li>
<p>Wenn ich ein Objekt im vector mFoos an Index i loesche und danach mFoos[i] returne, dann ist das doch das Objekt NACH dem geloeschten, oder? Also muss ich vorm erase() das Objekt ausm vector holen?</p>
</li>
<li>
<p>Mein groesseres Problem: Wenn ich nun das Objekt ausm Vektor hole:</p>
</li>
</ol>
<pre><code class="language-cpp">const Foo&amp; f = mFoos[index];
   if(f.num &gt;= f.totalNum)
      mFoos.erase(mDecals.begin() + index);

   return f;
</code></pre>
<p>dann returne ich doch eine Referenz auf etwas, dass es nicht mehr gibt, oder? Wie kann ich das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276810/geloeschtes-vektor-element-zurueckgeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 05:29:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276810.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Nov 2010 15:49:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geloeschtes Vektor Element zurueckgeben on Mon, 08 Nov 2010 15:49:06 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe einen Vektor mit Foo Objekten.</p>
<p>Jetzt habe ich eine Methode, die random ein Foo Objekt liefern soll. Jedes Foo Objekt hat ferner einen Zaehler num (startet bei 0). Es soll nur ein Foo Objekt geliefert werden, solange Foo::num &lt; Foo::totalNum.</p>
<p>Die Methode sieht so aus:</p>
<pre><code class="language-cpp">const Foo&amp; FooManager::getRandomFoo() const {
   int index = rand() % mFoos.size();
   mFoos[index].num++;

   if(mFoos[index].num &gt;= mFoos[index].totalNum)
	mFoos.erase(mDecals.begin() + index);

 return mFoos[index];
}
</code></pre>
<p>Wie ihr seht wird das Foo Objekt geloescht, wenn num totalNum erreicht hat. Meine Fragen:</p>
<ol>
<li>
<p>Wenn ich ein Objekt im vector mFoos an Index i loesche und danach mFoos[i] returne, dann ist das doch das Objekt NACH dem geloeschten, oder? Also muss ich vorm erase() das Objekt ausm vector holen?</p>
</li>
<li>
<p>Mein groesseres Problem: Wenn ich nun das Objekt ausm Vektor hole:</p>
</li>
</ol>
<pre><code class="language-cpp">const Foo&amp; f = mFoos[index];
   if(f.num &gt;= f.totalNum)
      mFoos.erase(mDecals.begin() + index);

   return f;
</code></pre>
<p>dann returne ich doch eine Referenz auf etwas, dass es nicht mehr gibt, oder? Wie kann ich das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977365</guid><dc:creator><![CDATA[vektorianer]]></dc:creator><pubDate>Mon, 08 Nov 2010 15:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to Geloeschtes Vektor Element zurueckgeben on Mon, 08 Nov 2010 15:51:31 GMT]]></title><description><![CDATA[<p>Keine Referenz, sondern eine Kopie zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977366</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 08 Nov 2010 15:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to Geloeschtes Vektor Element zurueckgeben on Mon, 08 Nov 2010 19:47:36 GMT]]></title><description><![CDATA[<p>... und dabei nicht nur den Rückgabetyp der Funktion, sondern auch den Typ von <code>f</code> zu einem Werttyp machen. Denn Referenzen werden ungültig, sobald ihr Ziel zerstört wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977511</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 08 Nov 2010 19:47:36 GMT</pubDate></item></channel></rss>