<?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[Probleme bei CTypedPtrArray]]></title><description><![CDATA[<p>Kann ich in einem Document nicht 2 Felder von folgenden Typ anlegen?</p>
<pre><code>CTypedPtrArray&lt;CObArray,CVokabel*&gt; myVokabelArray;
CTypedPtrArray&lt;CObArray,CStatistik*&gt; myStatistikArray;
</code></pre>
<p>Die beiden Typen sind eigentlich gleich aufgebaut. Nur scheint das zweite seine Daten nicht korrekt verwalten zu können.</p>
<p>Folgenden Effekt verstehe ich nicht:<br />
In NewDocument rufe ich folgendes auf</p>
<pre><code>CStatistik *statTemp=new CStatistik(CTime::GetCurrentTime(),234,5);
	myStatistikArray.Add(statTemp);
	TRACE(&quot;statTemp: %d\n&quot;,statTemp-&gt;GetNumberOfErrors());
	delete statTemp;
	TRACE(&quot;%d\n&quot;,myStatistikArray.GetSize());
	TRACE(&quot;%d\n&quot;,myStatistikArray.GetAt(0)-&gt;GetNumberOfErrors());
</code></pre>
<p>Im Trace steht nun folgendes:<br />
statTemp: 5<br />
1<br />
In Statistik GetNumberofErrors: -17891602<br />
-17891602</p>
<p>Hier noch der Constructor von CStatistik:</p>
<pre><code>CStatistik::CStatistik(const CTime wert1,const int wert2,const int wert3)
{
	TRACE(&quot;In Constructor: %d\n&quot;,wert2);
	m_ctDateOfSession=wert1;
	m_intNumberOfQuestions=wert2;
	m_intNumberOfErrors=wert3;
}
</code></pre>
<p>Und die Funtion GetNumberOfErrors() in CStatistik</p>
<pre><code>int CStatistik::GetNumberOfErrors()
{
	TRACE(&quot;In Statistik GetNumberofErrors: %d\n&quot;,m_intNumberOfErrors);
	return m_intNumberOfErrors;
}
</code></pre>
<p>Kann mir jemand nun erklären, warum beim Zugriff auf das Array die Funktion myStatistikArray.GetAt(0)-&gt;GetNumberOfErrors() die Zahl -17891602 zurück gibt und nicht 5?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176317/probleme-bei-ctypedptrarray</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 10:35:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176317.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Mar 2007 00:37:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme bei CTypedPtrArray on Tue, 20 Mar 2007 00:37:45 GMT]]></title><description><![CDATA[<p>Kann ich in einem Document nicht 2 Felder von folgenden Typ anlegen?</p>
<pre><code>CTypedPtrArray&lt;CObArray,CVokabel*&gt; myVokabelArray;
CTypedPtrArray&lt;CObArray,CStatistik*&gt; myStatistikArray;
</code></pre>
<p>Die beiden Typen sind eigentlich gleich aufgebaut. Nur scheint das zweite seine Daten nicht korrekt verwalten zu können.</p>
<p>Folgenden Effekt verstehe ich nicht:<br />
In NewDocument rufe ich folgendes auf</p>
<pre><code>CStatistik *statTemp=new CStatistik(CTime::GetCurrentTime(),234,5);
	myStatistikArray.Add(statTemp);
	TRACE(&quot;statTemp: %d\n&quot;,statTemp-&gt;GetNumberOfErrors());
	delete statTemp;
	TRACE(&quot;%d\n&quot;,myStatistikArray.GetSize());
	TRACE(&quot;%d\n&quot;,myStatistikArray.GetAt(0)-&gt;GetNumberOfErrors());
</code></pre>
<p>Im Trace steht nun folgendes:<br />
statTemp: 5<br />
1<br />
In Statistik GetNumberofErrors: -17891602<br />
-17891602</p>
<p>Hier noch der Constructor von CStatistik:</p>
<pre><code>CStatistik::CStatistik(const CTime wert1,const int wert2,const int wert3)
{
	TRACE(&quot;In Constructor: %d\n&quot;,wert2);
	m_ctDateOfSession=wert1;
	m_intNumberOfQuestions=wert2;
	m_intNumberOfErrors=wert3;
}
</code></pre>
<p>Und die Funtion GetNumberOfErrors() in CStatistik</p>
<pre><code>int CStatistik::GetNumberOfErrors()
{
	TRACE(&quot;In Statistik GetNumberofErrors: %d\n&quot;,m_intNumberOfErrors);
	return m_intNumberOfErrors;
}
</code></pre>
<p>Kann mir jemand nun erklären, warum beim Zugriff auf das Array die Funktion myStatistikArray.GetAt(0)-&gt;GetNumberOfErrors() die Zahl -17891602 zurück gibt und nicht 5?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248841</guid><dc:creator><![CDATA[ratmann]]></dc:creator><pubDate>Tue, 20 Mar 2007 00:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei CTypedPtrArray on Tue, 20 Mar 2007 00:49:45 GMT]]></title><description><![CDATA[<p>Da du das Objekt, gleich nachdem du den Zeiger in das Array gesteckt hast, mit delete wieder zerstörst, ist der Zeiger im Array ungültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248845</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 20 Mar 2007 00:49:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei CTypedPtrArray on Tue, 20 Mar 2007 01:12:34 GMT]]></title><description><![CDATA[<p>Ich dachte einem <strong>new</strong> muss ein <strong>delete</strong> folgen und ich dachte auch, dass der Zeiger hier zerstört werden kann, weil nun das Array die Sache verwaltet.<br />
Wann kann ich denn den Zeiger löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248847</guid><dc:creator><![CDATA[ratmann]]></dc:creator><pubDate>Tue, 20 Mar 2007 01:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei CTypedPtrArray on Tue, 20 Mar 2007 05:18:43 GMT]]></title><description><![CDATA[<p>ratmann schrieb:</p>
<blockquote>
<p>Ich dachte einem <strong>new</strong> muss ein <strong>delete</strong> folgen</p>
</blockquote>
<p>Soweit richtig.</p>
<blockquote>
<p>und ich dachte auch, dass der Zeiger hier zerstört werden kann, weil nun das Array die Sache verwaltet.</p>
</blockquote>
<p>delete zerstört nicht den Zeiger, sondern das Objekt, worauf er zeigt. Und das Array verwaltet nur den (jetzt ungültigen) Zeiger.</p>
<blockquote>
<p>Wann kann ich denn den Zeiger löschen?</p>
</blockquote>
<p>Wenn du das Objekt nicht mehr brauchst.</p>
<p>Muss es denn CTypedPtrArray sein? Würde es std::vector nicht auch tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248866</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 20 Mar 2007 05:18:43 GMT</pubDate></item></channel></rss>