<?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[return std::list&amp;lt;Foo &amp;amp;&amp;gt; problem]]></title><description><![CDATA[<p>Ich hab ein struct Foo, welches einen CopyCtor und Zuweisungsoperator definiert hat.</p>
<p>Meine Klassenmethoden können auch Problemlos eine Foo &amp; zurückgeben (natürlich keine lokale!)</p>
<p>Aber bei einer Methode, bei der ich so etwas versuche:</p>
<pre><code class="language-cpp">std::list&lt;Foo &amp;&gt; meineMethode()
{
  std::list&lt;Foo &amp;&gt; liste;
  return liste;
}
</code></pre>
<p>geht es in die Hose, ich krieg mir nichts sagende Meldungen wie:</p>
<pre><code>Fehler	4	error C2528: 'pointer': Zeiger auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	96
Fehler	5	error C2529: 'reference': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	97
Fehler	7	error C2528: 'const_pointer': Zeiger auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	98
Fehler	9	error C2529: 'const_reference': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	99
Fehler	10	error C2535: 'Foo&amp;(*std::allocator&lt;_Ty&gt;::address(Foo&amp;(&amp;)) const)': Memberfunktion bereits definiert oder deklariert	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	116
Fehler	13	error C2529: '_Val': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	154
Fehler	17	error C2529: '_Val': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\list	446
</code></pre>
<p>Diese Meldungen kommen alle in xmemory oder list, und ich krieg den Zusammenhang nicht. hat das was mit der inneren struktur der std::list zu tun?<br />
Und kommt man so nur über Zeiger daran vorbei?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245519/return-std-list-lt-foo-amp-gt-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 18:28:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245519.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Jul 2009 07:19:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to return std::list&amp;lt;Foo &amp;amp;&amp;gt; problem on Wed, 15 Jul 2009 07:19:42 GMT]]></title><description><![CDATA[<p>Ich hab ein struct Foo, welches einen CopyCtor und Zuweisungsoperator definiert hat.</p>
<p>Meine Klassenmethoden können auch Problemlos eine Foo &amp; zurückgeben (natürlich keine lokale!)</p>
<p>Aber bei einer Methode, bei der ich so etwas versuche:</p>
<pre><code class="language-cpp">std::list&lt;Foo &amp;&gt; meineMethode()
{
  std::list&lt;Foo &amp;&gt; liste;
  return liste;
}
</code></pre>
<p>geht es in die Hose, ich krieg mir nichts sagende Meldungen wie:</p>
<pre><code>Fehler	4	error C2528: 'pointer': Zeiger auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	96
Fehler	5	error C2529: 'reference': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	97
Fehler	7	error C2528: 'const_pointer': Zeiger auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	98
Fehler	9	error C2529: 'const_reference': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	99
Fehler	10	error C2535: 'Foo&amp;(*std::allocator&lt;_Ty&gt;::address(Foo&amp;(&amp;)) const)': Memberfunktion bereits definiert oder deklariert	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	116
Fehler	13	error C2529: '_Val': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\xmemory	154
Fehler	17	error C2529: '_Val': Verweis auf Verweis ungültig	C:\Programme\Microsoft Visual Studio 8\VC\include\list	446
</code></pre>
<p>Diese Meldungen kommen alle in xmemory oder list, und ich krieg den Zusammenhang nicht. hat das was mit der inneren struktur der std::list zu tun?<br />
Und kommt man so nur über Zeiger daran vorbei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743231</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Wed, 15 Jul 2009 07:19:42 GMT</pubDate></item><item><title><![CDATA[Reply to return std::list&amp;lt;Foo &amp;amp;&amp;gt; problem on Wed, 15 Jul 2009 07:23:48 GMT]]></title><description><![CDATA[<p>Die Anforderungen an vector (und alle anderen Container) lauten, dass die Elementtypen Copy-Constructible (kopierbar) und Assignable (zuweisbar) sind. Referenzen sind nicht zuweisbar, deshalb können die nicht in Containern gespeichert werden.</p>
<p>Ja, ein möglicher Umweg wären Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743235</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 15 Jul 2009 07:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to return std::list&amp;lt;Foo &amp;amp;&amp;gt; problem on Wed, 15 Jul 2009 07:25:27 GMT]]></title><description><![CDATA[<p>Achso! Danke für die Aufklärung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743237</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Wed, 15 Jul 2009 07:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to return std::list&amp;lt;Foo &amp;amp;&amp;gt; problem on Wed, 15 Jul 2009 09:04:45 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Referenzen sind nicht zuweisbar, deshalb können die nicht in Containern gespeichert werden.</p>
</blockquote>
<p>Ob Referenzen zuweisbar sind, hängt davon ab, wie Zuweisbarkeit genau definiert ist.</p>
<pre><code class="language-cpp">int  i=1,  j=2;
  int &amp;k=i, &amp;l=j;
  k = l; // Zuweisung?
</code></pre>
<p>Ich habe leider den aktuellen Standard nicht zur Hand und kann nicht nachgucken, welche Bedingungen an den Typen T genau gestellt werden.</p>
<p>In neueren Entwürfen ist da die Rede von &quot;value types&quot;: <em>value types are types for which objects, variables, references, pointers, and pointer-to-members can be created.</em>. Das schließt automatisch Referenzen aus, weil man nicht auf Referenzen zeigen kann. In einem alten Entwurf von 2005 (N1905) gibt es einen Abschnitt &quot;Copy Construction&quot; im Kapitel 20.1 Requirements. In diesem wird gefordert, dass ein kopierbares Object a vom Typ T folgende Bedingung erfüllen muss: &amp;a ist vom Typ T*. Das gilt für Referenzen natürlich auch nicht (Bei T=int&amp; gilt &amp;a ist vom Typ int*).</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743308</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 15 Jul 2009 09:04:45 GMT</pubDate></item></channel></rss>