<?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[Frage zu Rückgabewerten von Methoden]]></title><description><![CDATA[<p>Hoi,</p>
<p>Ich habe ein Problem auf das ich nicht wirklich eine Antwort weiß.</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
Array&lt;Type&gt; Array&lt;Type&gt;::operator+(Array&lt;Type&gt;&amp; ratArray)
{
	Array&lt;Type&gt; atArray;
        // hier kopiere ich alles
	return atArray;
}
</code></pre>
<p>Das ist die Methode.<br />
Wenn ich dies jetzt anwende bekomme ich eine Assertiation.</p>
<pre><code>BLOCK_TYPE_IS_VALID(...)
</code></pre>
<pre><code class="language-cpp">Array&lt;int&gt; a1(1),a2(1),a3(2);

a1=1;
a2=2;

a3=a1+a2;
</code></pre>
<p>Aber ich habe keine Ahnung warum.<br />
Wenn ich aber in der Methode den Rückgabewert static mache funktioniert es ohne Probleme.</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
Array&lt;Type&gt; Array&lt;Type&gt;::operator+(Array&lt;Type&gt;&amp; ratArray)
{
	static Array&lt;Type&gt; atArray;
        // hier kopiere ich alles
	return atArray;
}
</code></pre>
<p>Diese Art von Fehler erinnert mich an Fehler die passieren, wenn man Pointer oder Referenzen zurückgibt, aber in diesem Fall benutze ich keine.</p>
<p>Falls ihr den ganzen Code braucht sagt nur Bescheid.</p>
<p>mfg Babu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160898/frage-zu-rückgabewerten-von-methoden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 10:43:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160898.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Sep 2006 20:14:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 20:14:49 GMT]]></title><description><![CDATA[<p>Hoi,</p>
<p>Ich habe ein Problem auf das ich nicht wirklich eine Antwort weiß.</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
Array&lt;Type&gt; Array&lt;Type&gt;::operator+(Array&lt;Type&gt;&amp; ratArray)
{
	Array&lt;Type&gt; atArray;
        // hier kopiere ich alles
	return atArray;
}
</code></pre>
<p>Das ist die Methode.<br />
Wenn ich dies jetzt anwende bekomme ich eine Assertiation.</p>
<pre><code>BLOCK_TYPE_IS_VALID(...)
</code></pre>
<pre><code class="language-cpp">Array&lt;int&gt; a1(1),a2(1),a3(2);

a1=1;
a2=2;

a3=a1+a2;
</code></pre>
<p>Aber ich habe keine Ahnung warum.<br />
Wenn ich aber in der Methode den Rückgabewert static mache funktioniert es ohne Probleme.</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
Array&lt;Type&gt; Array&lt;Type&gt;::operator+(Array&lt;Type&gt;&amp; ratArray)
{
	static Array&lt;Type&gt; atArray;
        // hier kopiere ich alles
	return atArray;
}
</code></pre>
<p>Diese Art von Fehler erinnert mich an Fehler die passieren, wenn man Pointer oder Referenzen zurückgibt, aber in diesem Fall benutze ich keine.</p>
<p>Falls ihr den ganzen Code braucht sagt nur Bescheid.</p>
<p>mfg Babu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147216</guid><dc:creator><![CDATA[Babu__]]></dc:creator><pubDate>Sat, 30 Sep 2006 20:14:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 20:23:10 GMT]]></title><description><![CDATA[<p>Klasse Array&lt;T&gt; enthält Pointer und der Kopierkonstruktor / Zuweisungsoperator nicht korrekt implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147218</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 30 Sep 2006 20:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 20:40:47 GMT]]></title><description><![CDATA[<p>Soweit ich das überblicken kann ist alles in Ordnung.<br />
Ich gebe mal den ganzen Code:</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
class Array
{
	public:

		Array(void);
		Array(un unSize);
		Array(un unSize,Type* ptSourceData,un unDataSize,un unIndex);

		~Array(void);

		void SetSize(un unNewSize);

		void AssignData(Type* ptSourceData,un unDataSize,un unIndex);

		void operator=(Array&lt;Type&gt;&amp; ratArray);

		Array&lt;Type&gt; operator+(Array&lt;Type&gt;&amp; ratArray);

		Type* ptData;
		un unSize;
};

template&lt;typename Type&gt;
Array&lt;Type&gt; Array&lt;Type&gt;::operator+(Array&lt;Type&gt;&amp; ratArray)
{
	Array&lt;Type&gt; atArray; // wenn man hier ein static setzt funktioniert es
                             // aber ich weiß nicht warum

	atArray.SetSize(this-&gt;unSize+ratArray.unSize);
	atArray.AssignData(this-&gt;ptData,this-&gt;unSize,0);
	atArray.AssignData(ratArray.ptData,ratArray.unSize,this-&gt;unSize);

	return atArray;
}

template&lt;typename Type&gt;
void Array&lt;Type&gt;::AssignData(Type* ptSourceData,un unDataSize,un unIndex)
{
	for(un unTicks=0;unTicks&lt;unDataSize;unTicks++)
	{
		this-&gt;ptData[unTicks+unIndex]=ptSourceData[unTicks];
	}

	return;
}

template&lt;typename Type&gt;
void Array&lt;Type&gt;::operator=(Array&lt;Type&gt;&amp; ratArray)
{
	this-&gt;SetSize(ratArray.unSize);
	this-&gt;AssignData(ratArray.ptData,ratArray.unSize,0);

	return;
}

template&lt;typename Type&gt;
void Array&lt;Type&gt;::SetSize(un unNewSize)
{
	delete[] this-&gt;ptData;
	this-&gt;ptData=new Type[unNewSize];
	this-&gt;unSize=unNewSize;

	return;
}

template&lt;typename Type&gt;
Array&lt;Type&gt;::Array(void)
{
	this-&gt;ptData=new Type[0];
	this-&gt;unSize=0;
}

template&lt;typename Type&gt;
Array&lt;Type&gt;::Array(un unSize)
{
	this-&gt;ptData=new Type[unSize];
	this-&gt;unSize=unSize;
}

template&lt;typename Type&gt;
Array&lt;Type&gt;::Array(un unSize,Type* ptSourceData,un unDataSize,un unIndex)
{
	this-&gt;ptData=new Type[unSize];
	this-&gt;unSize=unSize;

	this-&gt;AssignData(ptSourceData,unDataSize,unIndex);
}

template&lt;typename Type&gt;
Array&lt;Type&gt;::~Array(void)
{
	delete[] this-&gt;ptData;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1147225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147225</guid><dc:creator><![CDATA[Babu__]]></dc:creator><pubDate>Sat, 30 Sep 2006 20:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 20:42:57 GMT]]></title><description><![CDATA[<p>Du hast keinen Kopierkonstruktor! Der wird in den allermeisten Fällen benötigt wenn Du ein Objekt by-value zurückgibst.</p>
<pre><code class="language-cpp">Array(const Array&lt;Type&gt;&amp; other);
</code></pre>
<p>EDIT: Der muss im wesentlichen die Struktur so initialisieren wie sie der operator= kopieren würde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147226</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 30 Sep 2006 20:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 21:22:42 GMT]]></title><description><![CDATA[<p>Jetzt bekomme ich Fehler wie</p>
<pre><code>CtrIsValidHeapPointer(...)
</code></pre>
<p>Aber ich frage mich woher kann das alles kommen.<br />
Der Code ist bis jetzt ja nicht wirklich schwer und eher primitiv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147232</guid><dc:creator><![CDATA[Babu__]]></dc:creator><pubDate>Sat, 30 Sep 2006 21:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sat, 30 Sep 2006 21:58:10 GMT]]></title><description><![CDATA[<p>Spaßvogel! Du arbeitest mit nackten Arrays. Selbst Schuld. Da gibt es dutzende Möglichkeiten Fehler zu machen, die man ganz schnell übersieht. Mit einem std::vector wäre dir das vermutlich nicht passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147239</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 30 Sep 2006 21:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sun, 01 Oct 2006 09:27:19 GMT]]></title><description><![CDATA[<p>Z2 schrieb:</p>
<blockquote>
<p>Spaßvogel! Du arbeitest mit nackten Arrays. Selbst Schuld. Da gibt es dutzende Möglichkeiten Fehler zu machen, die man ganz schnell übersieht. Mit einem std::vector wäre dir das vermutlich nicht passiert.</p>
</blockquote>
<p>Selber Spaßvogel! Er baut sich doch genau deswegen eine Arayklasse -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147303</guid><dc:creator><![CDATA[kenner der vögel]]></dc:creator><pubDate>Sun, 01 Oct 2006 09:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Rückgabewerten von Methoden on Sun, 01 Oct 2006 09:46:42 GMT]]></title><description><![CDATA[<p>kenner der vögel schrieb:</p>
<blockquote>
<p>Z2 schrieb:</p>
<blockquote>
<p>Spaßvogel! Du arbeitest mit nackten Arrays. Selbst Schuld. Da gibt es dutzende Möglichkeiten Fehler zu machen, die man ganz schnell übersieht. Mit einem std::vector wäre dir das vermutlich nicht passiert.</p>
</blockquote>
<p>Selber Spaßvogel! Er baut sich doch genau deswegen eine Arayklasse -.-</p>
</blockquote>
<p>Wenn eine spezielle Array-Klasse benötigt wird (std::vector es also aus irgendeinem Grund nicht tut), ist es trotzdem sinnvoll diese auf eine bereits etablierte Array-Klasse zurückzuführen (eben std::vector).<br />
Wenn es nur um eine Übung geht, ok. Allerdings sehe ich nicht, welchen Sinn es hat eine Programmiertechnik zu üben, die im Allgemeinen keinen praktischen Nutzen mehr hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147309</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sun, 01 Oct 2006 09:46:42 GMT</pubDate></item></channel></rss>