<?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[Array übergeben, in Vector kopieren]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgendes Problem:</p>
<pre><code class="language-cpp">SFColor sfColors[2];
MFColor mfColor(sfColors);
cout &lt;&lt; mfColor.ToString() &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>liefert nur &quot;[ ]&quot; zurück. Warum???</p>
<p>Hier die anderen Klassen.</p>
<pre><code class="language-cpp">// MFColor
MFColor::MFColor(SFColor value[])
{
	vector&lt;SFColor&gt; vec(value, value + (sizeof(value) / sizeof(value[0])));
	this-&gt;value = vec;
}

string MFColor::ToString()
{
	stringstream sstream;
	sstream &lt;&lt; &quot;[ &quot;;
	vector&lt;SFColor&gt;::iterator iter = this-&gt;value.begin();
	for(int i = 0; iter != this-&gt;value.end(); ++iter, ++i)
	{
		sstream &lt;&lt; this-&gt;value[i].ToString() &lt;&lt; &quot;, &quot;;
	}
	sstream &lt;&lt; &quot;]&quot;;
	return sstream.str();
}

// SFColor
SFColor::SFColor(float r /* = 0 */, float g /* = 0 */, float b /* = 0 */)
{
	this-&gt;SetValue(r, g, b);
}

void SFColor::SetValue(float r, float g, float b)
{
	this-&gt;value[0] = r;
	this-&gt;value[1] = g;
	this-&gt;value[2] = b;
}

string SFColor::ToString()
{
	stringstream sstream;
	sstream &lt;&lt; this-&gt;value[0] &lt;&lt; &quot; &quot; &lt;&lt; this-&gt;value[1] &lt;&lt; &quot; &quot; &lt;&lt; this-&gt;value[2];
	return sstream.str();
}
</code></pre>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174298/array-übergeben-in-vector-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 14:41:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174298.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Feb 2007 11:43:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array übergeben, in Vector kopieren on Sun, 25 Feb 2007 11:43:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgendes Problem:</p>
<pre><code class="language-cpp">SFColor sfColors[2];
MFColor mfColor(sfColors);
cout &lt;&lt; mfColor.ToString() &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>liefert nur &quot;[ ]&quot; zurück. Warum???</p>
<p>Hier die anderen Klassen.</p>
<pre><code class="language-cpp">// MFColor
MFColor::MFColor(SFColor value[])
{
	vector&lt;SFColor&gt; vec(value, value + (sizeof(value) / sizeof(value[0])));
	this-&gt;value = vec;
}

string MFColor::ToString()
{
	stringstream sstream;
	sstream &lt;&lt; &quot;[ &quot;;
	vector&lt;SFColor&gt;::iterator iter = this-&gt;value.begin();
	for(int i = 0; iter != this-&gt;value.end(); ++iter, ++i)
	{
		sstream &lt;&lt; this-&gt;value[i].ToString() &lt;&lt; &quot;, &quot;;
	}
	sstream &lt;&lt; &quot;]&quot;;
	return sstream.str();
}

// SFColor
SFColor::SFColor(float r /* = 0 */, float g /* = 0 */, float b /* = 0 */)
{
	this-&gt;SetValue(r, g, b);
}

void SFColor::SetValue(float r, float g, float b)
{
	this-&gt;value[0] = r;
	this-&gt;value[1] = g;
	this-&gt;value[2] = b;
}

string SFColor::ToString()
{
	stringstream sstream;
	sstream &lt;&lt; this-&gt;value[0] &lt;&lt; &quot; &quot; &lt;&lt; this-&gt;value[1] &lt;&lt; &quot; &quot; &lt;&lt; this-&gt;value[2];
	return sstream.str();
}
</code></pre>
<p>Gruß<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235052</guid><dc:creator><![CDATA[PACoSys]]></dc:creator><pubDate>Sun, 25 Feb 2007 11:43:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array übergeben, in Vector kopieren on Sun, 25 Feb 2007 12:04:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Größe Deines C-Arrays ist dem Konstruktor nicht bekannt. Deine Kopie klappt so also nicht. Du musst explizit die Größe mit übergeben.</p>
<p>Zusätzlich findet in Deinem Konstruktor ein unnötiger Aufruf des Kopierkonstruktors statt, den man durch das Verwenden einer Initialisierungsliste wegoptimieren kann:</p>
<pre><code class="language-cpp">MFColor::MFColor(SFColor value[], std::size_t len)
    : value(value, value + len) { }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1235067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235067</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 25 Feb 2007 12:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array übergeben, in Vector kopieren on Sun, 25 Feb 2007 12:05:14 GMT]]></title><description><![CDATA[<p>Nachtrag: 'ToString' halte ich für eine schlechte Idee in C++. Hier wird jedes Mal ein neuer Stream erzeugt und zerstört. Es wäre sicher effizienter, die eingebaute Semantik über Streams zu verwenden, indem man 'operator &lt;&lt;' für 'std::ostream' überlädt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235068</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 25 Feb 2007 12:05:14 GMT</pubDate></item></channel></rss>