<?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[Verwendung eines Containers]]></title><description><![CDATA[<p>Hallo hier im Forum,<br />
(ich bin neu hier, und auch in c++ ein blutiger Anfaenger)</p>
<p>Ich habe einen Testcase angehaengt, der mein Problem isoliert:<br />
Eine class &quot;L&quot; sollte mit der Methode L::add(T &amp;t) Instanzen einer Klasse &quot;AT&quot; erzeugen, die auf &quot;t&quot; referenzieren, und ausserdem in einen Container aTList_ pushen.</p>
<p>Die Methode L::getDP() sollte dann durch diesen Container iterieren, und genau das funktioniert nicht - bzw. produziert ein Zufallsergebnis wie mir scheint.</p>
<p>Nach fast 2 Tagen vergeblicher Fehlersuche muss ich euch fragen:<br />
Was ist, wahrscheinlich in l.cpp falsch?</p>
<p>vielen Dank</p>
<p>class L {<br />
public:<br />
L();<br />
L&amp; add(T&amp; t);<br />
void getDP();<br />
private:<br />
std::list&lt; AT* &gt; aTList_;<br />
};</p>
<p>################################<br />
l.cpp:</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;list&gt;<br />
#include &quot;l.h&quot;<br />
using namespace std;</p>
<p>L::L(){}</p>
<p>L&amp; L::add(T &amp;t){<br />
AT at(t, true);<br />
aTList_.push_back(&amp;at);<br />
return *this;<br />
}</p>
<p>void L::getDP(){<br />
std::list&lt; AT* &gt;::iterator it = aTList_.begin();<br />
for( ; it != aTList_.end();++it) {<br />
AT* at = *it;<br />
cout &lt;&lt; at-&gt;getD() &lt;&lt; endl;<br />
}<br />
}</p>
<p>################################<br />
at.h:<br />
class T;<br />
class AT {<br />
public:<br />
AT(T&amp; t, bool d) : t_(t), d_(d){}<br />
bool getD();<br />
T&amp; getT();<br />
private:<br />
T&amp; t_;<br />
bool d_;<br />
};</p>
<p>################################<br />
at.cpp:<br />
#include &quot;at.h&quot;</p>
<p>bool AT::getD(){ return d_;}<br />
T&amp; AT::getT() { return t_;}</p>
<p>################################<br />
t.h:<br />
class T {<br />
public:<br />
T(int i) : i_(i){}<br />
int getI();<br />
private:<br />
int i_;<br />
};</p>
<p>################################<br />
t.cpp:<br />
#include &quot;t.h&quot;<br />
int T::getI() {return i_;}</p>
<p>################################<br />
main.cpp:<br />
#include &quot;t.h&quot;<br />
#include &quot;l.h&quot;<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int main(int argc, char *argv[])<br />
{<br />
int a = 4;<br />
T it(a);<br />
L il;<br />
il.add(it);<br />
il.getDP();<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322744/verwendung-eines-containers</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 17:41:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322744.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Jan 2014 13:22:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 13:22:40 GMT]]></title><description><![CDATA[<p>Hallo hier im Forum,<br />
(ich bin neu hier, und auch in c++ ein blutiger Anfaenger)</p>
<p>Ich habe einen Testcase angehaengt, der mein Problem isoliert:<br />
Eine class &quot;L&quot; sollte mit der Methode L::add(T &amp;t) Instanzen einer Klasse &quot;AT&quot; erzeugen, die auf &quot;t&quot; referenzieren, und ausserdem in einen Container aTList_ pushen.</p>
<p>Die Methode L::getDP() sollte dann durch diesen Container iterieren, und genau das funktioniert nicht - bzw. produziert ein Zufallsergebnis wie mir scheint.</p>
<p>Nach fast 2 Tagen vergeblicher Fehlersuche muss ich euch fragen:<br />
Was ist, wahrscheinlich in l.cpp falsch?</p>
<p>vielen Dank</p>
<p>class L {<br />
public:<br />
L();<br />
L&amp; add(T&amp; t);<br />
void getDP();<br />
private:<br />
std::list&lt; AT* &gt; aTList_;<br />
};</p>
<p>################################<br />
l.cpp:</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;list&gt;<br />
#include &quot;l.h&quot;<br />
using namespace std;</p>
<p>L::L(){}</p>
<p>L&amp; L::add(T &amp;t){<br />
AT at(t, true);<br />
aTList_.push_back(&amp;at);<br />
return *this;<br />
}</p>
<p>void L::getDP(){<br />
std::list&lt; AT* &gt;::iterator it = aTList_.begin();<br />
for( ; it != aTList_.end();++it) {<br />
AT* at = *it;<br />
cout &lt;&lt; at-&gt;getD() &lt;&lt; endl;<br />
}<br />
}</p>
<p>################################<br />
at.h:<br />
class T;<br />
class AT {<br />
public:<br />
AT(T&amp; t, bool d) : t_(t), d_(d){}<br />
bool getD();<br />
T&amp; getT();<br />
private:<br />
T&amp; t_;<br />
bool d_;<br />
};</p>
<p>################################<br />
at.cpp:<br />
#include &quot;at.h&quot;</p>
<p>bool AT::getD(){ return d_;}<br />
T&amp; AT::getT() { return t_;}</p>
<p>################################<br />
t.h:<br />
class T {<br />
public:<br />
T(int i) : i_(i){}<br />
int getI();<br />
private:<br />
int i_;<br />
};</p>
<p>################################<br />
t.cpp:<br />
#include &quot;t.h&quot;<br />
int T::getI() {return i_;}</p>
<p>################################<br />
main.cpp:<br />
#include &quot;t.h&quot;<br />
#include &quot;l.h&quot;<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>int main(int argc, char *argv[])<br />
{<br />
int a = 4;<br />
T it(a);<br />
L il;<br />
il.add(it);<br />
il.getDP();<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375234</guid><dc:creator><![CDATA[kwurpi]]></dc:creator><pubDate>Sun, 05 Jan 2014 13:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 13:30:37 GMT]]></title><description><![CDATA[<p>code tags oder niemad liest es sich durch.</p>
<p>edit: <code>[code=&quot;cpp&quot;][/code]</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375235</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Sun, 05 Jan 2014 13:30:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 13:32:39 GMT]]></title><description><![CDATA[<pre><code>AT at(t, true);
aTList_.push_back(&amp;at);
</code></pre>
<p>Du fügst die Adresse von at in die Liste ein. at ist ein temporäres Objekt, was beim Verlassen der Funktion zerstört wird.<br />
BTW: Ernsthaft? Du nennst deine Klassen T, AT und L?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375236</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 05 Jan 2014 13:32:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 13:45:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29873">@Nathan</a>,<br />
ahhhhhhh ich verstehe!<br />
Ich muss also die Liste mit<br />
aTList_.push_back(at);<br />
fuellen.</p>
<p>Ich glaube das ist die Loesung!!</p>
<p>(Nein, die class-names sind Loop, AnnotatedTransformer, Transformer. Ich hab's<br />
nur in diesem testcase L, AT, T genannt)</p>
<p>vielen Dank nochmal!<br />
kwurpi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375238</guid><dc:creator><![CDATA[kwurpi]]></dc:creator><pubDate>Sun, 05 Jan 2014 13:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 13:50:43 GMT]]></title><description><![CDATA[<p>kwurpi schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29873">@Nathan</a>,<br />
ahhhhhhh ich verstehe!<br />
Ich muss also die Liste mit<br />
aTList_.push_back(at);<br />
fuellen.</p>
<p>Ich glaube das ist die Loesung!!</p>
</blockquote>
<p>Nicht ganz, dann fügst du ja keinen Pointer ein, sondern ein AT Objekt.<br />
Du musst also entweder dafür sorgen, dass der Pointer gültig bleibt (schlechtere Idee) oder direkt AT Objekte speichern (bessere Idee).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375239</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 05 Jan 2014 13:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung eines Containers on Sun, 05 Jan 2014 14:01:51 GMT]]></title><description><![CDATA[<p>Ich werde die AT objects direkt in die Liste nehmen. Die AT selber referenzieren die T, und das ist genau was ich will.<br />
Ich kann kaum beschreiben wie hilfreich deine paar Zeilen waren!<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375246</guid><dc:creator><![CDATA[kwurpi]]></dc:creator><pubDate>Sun, 05 Jan 2014 14:01:51 GMT</pubDate></item></channel></rss>