<?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[CObArray::Serialize mit 2 parameter]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe eine eigenen Datenklasse die in einem CObArray gespeichert wird. Meine Datenklasse besitzt demnach eine Serialize Funktion. Jetzt würde ich dieser gerne außer dem CArchiv auch noch einen Integer für die Version des Datenformats übergeben.</p>
<pre><code class="language-cpp">void CTimeData::Serialize(CArchive &amp;ar, int iVersion)
{
	if (ar.IsStoring())
	{
		ar&lt;&lt;...	}
	else
	{
		switch (iVersion)
		{
			case 0:
				ar&gt;&gt;....
				break;
			case 1:
				ar&gt;&gt;...
				break;
		}

	}

}
</code></pre>
<p>Jetzt habe ich aber das Problem, das CObArray::Serialize nur einen Parameter übernimmt. Deshalb habe ich eine von CObArray abgeleitete Klasse erstellt und dort Serialize mit 2 Parametern überschrieben. Das Problem ist nur, das innerhalb von CObArray eine CObject::Serialize(ar) aufgerufen wird, der nur einen Paramter besitzt. Wie kann ich diese Funktion überschreiben. Ich habe es so probiert (klappt aber nicht, Fehler: &quot;Aufruf einer nicht statischen Memberfunktion...&quot;)</p>
<pre><code class="language-cpp">void CMyObArray::Serialize(CArchive&amp; ar, int iVersion)
{
	ASSERT_VALID(this);

	CTimeData::Serialize(ar, iVersion);  //  &lt;---- Hier kommt die Fehlermeldung

	if (ar.IsStoring())
	{
		ar.WriteCount(m_nSize);
		for (INT_PTR i = 0; i &lt; m_nSize; i++)
			ar &lt;&lt; m_pData[i];
	}
	else
	{
		DWORD_PTR nOldSize = ar.ReadCount();
		SetSize(nOldSize);
		for (INT_PTR i = 0; i &lt; m_nSize; i++)
			ar &gt;&gt; m_pData[i];
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/66651/cobarray-serialize-mit-2-parameter</link><generator>RSS for Node</generator><lastBuildDate>Fri, 05 Jun 2026 22:57:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/66651.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Mar 2004 13:14:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CObArray::Serialize mit 2 parameter on Mon, 01 Mar 2004 13:14:28 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe eine eigenen Datenklasse die in einem CObArray gespeichert wird. Meine Datenklasse besitzt demnach eine Serialize Funktion. Jetzt würde ich dieser gerne außer dem CArchiv auch noch einen Integer für die Version des Datenformats übergeben.</p>
<pre><code class="language-cpp">void CTimeData::Serialize(CArchive &amp;ar, int iVersion)
{
	if (ar.IsStoring())
	{
		ar&lt;&lt;...	}
	else
	{
		switch (iVersion)
		{
			case 0:
				ar&gt;&gt;....
				break;
			case 1:
				ar&gt;&gt;...
				break;
		}

	}

}
</code></pre>
<p>Jetzt habe ich aber das Problem, das CObArray::Serialize nur einen Parameter übernimmt. Deshalb habe ich eine von CObArray abgeleitete Klasse erstellt und dort Serialize mit 2 Parametern überschrieben. Das Problem ist nur, das innerhalb von CObArray eine CObject::Serialize(ar) aufgerufen wird, der nur einen Paramter besitzt. Wie kann ich diese Funktion überschreiben. Ich habe es so probiert (klappt aber nicht, Fehler: &quot;Aufruf einer nicht statischen Memberfunktion...&quot;)</p>
<pre><code class="language-cpp">void CMyObArray::Serialize(CArchive&amp; ar, int iVersion)
{
	ASSERT_VALID(this);

	CTimeData::Serialize(ar, iVersion);  //  &lt;---- Hier kommt die Fehlermeldung

	if (ar.IsStoring())
	{
		ar.WriteCount(m_nSize);
		for (INT_PTR i = 0; i &lt; m_nSize; i++)
			ar &lt;&lt; m_pData[i];
	}
	else
	{
		DWORD_PTR nOldSize = ar.ReadCount();
		SetSize(nOldSize);
		for (INT_PTR i = 0; i &lt; m_nSize; i++)
			ar &gt;&gt; m_pData[i];
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/470756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470756</guid><dc:creator><![CDATA[AnTri]]></dc:creator><pubDate>Mon, 01 Mar 2004 13:14:28 GMT</pubDate></item></channel></rss>