<?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[Kopierkonstruktor Problem]]></title><description><![CDATA[<p>Hab hier folgenden Konstruktor. Ein Set besteht aus n-SetMembern die über einen Pointer in einem SetMember-Array gespeichert werden.</p>
<p>Nun krieg ich bei der Erzeugung der SetMember Objekte aber einen kompilerfehler wenn ich es &quot;in einer zeile versuch&quot;:<br />
Es wird scheinbar versucht einen Kopierkonstruktor für SetMember(SetMember) aufzurufen, den es nicht gibt (wieso?), eig. müsste der existierene Konstruktor von Setmember mit int-parameter aufgerufen werden</p>
<pre><code class="language-cpp">m_elements[i] = SetMember(va_arg(vl,int))  //geht net
</code></pre>
<pre><code class="language-cpp">SetMember t(va_arg(vl,int));  //so läufts
		m_elements[i] = t;
</code></pre>
<p>hier mal die Konstruktor wo das Set Erzeugt wird.</p>
<pre><code class="language-cpp">Set::Set(int c, ...)
{
	m_count = c;

	va_list vl;
	va_start(vl, c);

	m_elements = new SetMember[c];

	for(int i=0; i &lt; c; i++)
	{
		SetMember t(va_arg(vl,int));  /* Warum nur so */
		m_elements[i] = t;            /* über diesen Umweg */
		//m_elements[i] = SetMember(va_arg(vl,int)); /* und nicht so ? */
	}	
	va_end(vl);
}
</code></pre>
<pre><code class="language-cpp">SetMember::SetMember(int x) //dieser Konstruktor sollte beide male aufgerufen werden
{
	m_val = x;
	m_kanElement = this;
}
</code></pre>
<p>Hoffe die Infos reichen, kann mir jemand sagen was da falsch läuft ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227115/kopierkonstruktor-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 06:22:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227115.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Nov 2008 09:16:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 09:16:43 GMT]]></title><description><![CDATA[<p>Hab hier folgenden Konstruktor. Ein Set besteht aus n-SetMembern die über einen Pointer in einem SetMember-Array gespeichert werden.</p>
<p>Nun krieg ich bei der Erzeugung der SetMember Objekte aber einen kompilerfehler wenn ich es &quot;in einer zeile versuch&quot;:<br />
Es wird scheinbar versucht einen Kopierkonstruktor für SetMember(SetMember) aufzurufen, den es nicht gibt (wieso?), eig. müsste der existierene Konstruktor von Setmember mit int-parameter aufgerufen werden</p>
<pre><code class="language-cpp">m_elements[i] = SetMember(va_arg(vl,int))  //geht net
</code></pre>
<pre><code class="language-cpp">SetMember t(va_arg(vl,int));  //so läufts
		m_elements[i] = t;
</code></pre>
<p>hier mal die Konstruktor wo das Set Erzeugt wird.</p>
<pre><code class="language-cpp">Set::Set(int c, ...)
{
	m_count = c;

	va_list vl;
	va_start(vl, c);

	m_elements = new SetMember[c];

	for(int i=0; i &lt; c; i++)
	{
		SetMember t(va_arg(vl,int));  /* Warum nur so */
		m_elements[i] = t;            /* über diesen Umweg */
		//m_elements[i] = SetMember(va_arg(vl,int)); /* und nicht so ? */
	}	
	va_end(vl);
}
</code></pre>
<pre><code class="language-cpp">SetMember::SetMember(int x) //dieser Konstruktor sollte beide male aufgerufen werden
{
	m_val = x;
	m_kanElement = this;
}
</code></pre>
<p>Hoffe die Infos reichen, kann mir jemand sagen was da falsch läuft ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613046</guid><dc:creator><![CDATA[jokisd]]></dc:creator><pubDate>Tue, 11 Nov 2008 09:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 09:25:47 GMT]]></title><description><![CDATA[<p>zuweisungs-operator??????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613048</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 11 Nov 2008 09:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 09:41:26 GMT]]></title><description><![CDATA[<p>mein zuweisungsoperator sieht so aus:</p>
<pre><code class="language-cpp">SetMember &amp; SetMember::operator=(const SetMember &amp; rhs)
{
	printf(&quot;SetMember Assignmentoperator\n&quot;);
	m_val = rhs.m_val;
	m_kanElement = this;

	return *this;
}
</code></pre>
<p>is da falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613055</guid><dc:creator><![CDATA[jokisd]]></dc:creator><pubDate>Tue, 11 Nov 2008 09:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 09:44:35 GMT]]></title><description><![CDATA[<p>sollte der Kopy-ctor nich so ausehen</p>
<pre><code class="language-cpp">SetMember::SetMember(const SetMember &amp;scr) //dieser Konstruktor sollte beide male 

m_val= scr.m_val;
....
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1613061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613061</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 11 Nov 2008 09:44:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 10:10:25 GMT]]></title><description><![CDATA[<p>Dies:<br />
SetMember t(va_arg(vl,int)); //so läufts<br />
m_elements[i] = t;</p>
<p>sollte gleichbedeutend sein mit:</p>
<p>SetMember m_elements[i] (va_arg(v1, int));</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613090</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 11 Nov 2008 10:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 10:32:39 GMT]]></title><description><![CDATA[<p>Sorry, das war natürlich Blödsinn!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613091</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 11 Nov 2008 10:32:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor Problem on Tue, 11 Nov 2008 11:40:26 GMT]]></title><description><![CDATA[<p>jokisd schrieb:</p>
<blockquote>
<p>m_elements = new SetMember[c];</p>
<p>for(int i=0; i &lt; c; i++)<br />
{<br />
SetMember t(va_arg(vl,int)); /* Warum nur so <em>/<br />
m_elements[i] = t; /</em> über diesen Umweg <em>/<br />
//m_elements[i] = SetMember(va_arg(vl,int)); /</em> und nicht so ? */<br />
}<br />
}[/cpp]</p>
</blockquote>
<p>Neuer Versuch:<br />
Ich habe das mal mit einem kleinen Beispiel nachgestellt. Bei mir funktionieren wie erwartet beide Wege. Der Kopierkonstruktor wird nicht benötigt. Es wird der passende überladene Konstruktor aufgerufen, der Zuweisungsoperator und der Destruktor. Das ist bei beiden Alternativen so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613115</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 11 Nov 2008 11:40:26 GMT</pubDate></item></channel></rss>