<?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[Problem mit der Übergabe eines Arrays]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem. Ich möchte ein Dynamisches Array an ein Objekt der Klasse CBitList übergeben und dort als Attribut speichern. Momentan mache ich es so:</p>
<p>main()</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;bit.h&quot;

using namespace std;

int main()
{
	int *arr;
	arr = new int[5];
	arr[0]=1;
	arr[1]=-1;
	arr[2]=0;
	arr[3]=1;
	arr[4]=-1;
	// CBitList erzeugen und direkt das Array arr übergeben.
	CBitList bit(arr);
	// Das Array arr ändern
	arr[0]=0;
	// Ich möchte das Array in bit speichern, abe rnicht als Zeiger, denn
	// wenn ich jetzt arr verändere, ändert sich auch das Array im Objekt
	// Und das möchte ich nicht
	cout &lt;&lt; arr &lt;&lt; &quot;=&quot; &lt;&lt; arr[0] &lt;&lt; endl &lt;&lt; bit.getBit() &lt;&lt; &quot;=&quot; &lt;&lt; bit.getBit()[0];
	cin.get(); cin.get();
	return 0;
}
</code></pre>
<p>bit.h</p>
<pre><code class="language-cpp">class CBitList {
private:
	int *bit;
public:
	CBitList(int *arr);
	CBitList(int bitint);
	int *getBit();
	void setBit(int index,int wert);
	void setBit(int *arr);
	bool compareBit(int *arr);
};
</code></pre>
<p>Ausschnitt aus der bit.cpp</p>
<pre><code class="language-cpp">#include &quot;bit.h&quot;

CBitList::CBitList(int *arr)
{
	bit = arr;
}

int *CBitList::getBit()
{
	return bit;
}
</code></pre>
<p>Wie kann ich das Array anders übergeben/speichern? So, dass ich dann in dem Objekt eine Kopie davon habe, und nicht nur den Zeiger darauf.</p>
<p>Ich hoffe jemand kann mir helfen</p>
<p>Grüße,<br />
Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260584/problem-mit-der-übergabe-eines-arrays</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 01:32:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260584.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Feb 2010 13:29:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:29:41 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem. Ich möchte ein Dynamisches Array an ein Objekt der Klasse CBitList übergeben und dort als Attribut speichern. Momentan mache ich es so:</p>
<p>main()</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;bit.h&quot;

using namespace std;

int main()
{
	int *arr;
	arr = new int[5];
	arr[0]=1;
	arr[1]=-1;
	arr[2]=0;
	arr[3]=1;
	arr[4]=-1;
	// CBitList erzeugen und direkt das Array arr übergeben.
	CBitList bit(arr);
	// Das Array arr ändern
	arr[0]=0;
	// Ich möchte das Array in bit speichern, abe rnicht als Zeiger, denn
	// wenn ich jetzt arr verändere, ändert sich auch das Array im Objekt
	// Und das möchte ich nicht
	cout &lt;&lt; arr &lt;&lt; &quot;=&quot; &lt;&lt; arr[0] &lt;&lt; endl &lt;&lt; bit.getBit() &lt;&lt; &quot;=&quot; &lt;&lt; bit.getBit()[0];
	cin.get(); cin.get();
	return 0;
}
</code></pre>
<p>bit.h</p>
<pre><code class="language-cpp">class CBitList {
private:
	int *bit;
public:
	CBitList(int *arr);
	CBitList(int bitint);
	int *getBit();
	void setBit(int index,int wert);
	void setBit(int *arr);
	bool compareBit(int *arr);
};
</code></pre>
<p>Ausschnitt aus der bit.cpp</p>
<pre><code class="language-cpp">#include &quot;bit.h&quot;

CBitList::CBitList(int *arr)
{
	bit = arr;
}

int *CBitList::getBit()
{
	return bit;
}
</code></pre>
<p>Wie kann ich das Array anders übergeben/speichern? So, dass ich dann in dem Objekt eine Kopie davon habe, und nicht nur den Zeiger darauf.</p>
<p>Ich hoffe jemand kann mir helfen</p>
<p>Grüße,<br />
Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851851</guid><dc:creator><![CDATA[Samuirai]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:31:21 GMT]]></title><description><![CDATA[<p>Du suchst <a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">std::vector</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851855</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:32:57 GMT]]></title><description><![CDATA[<p>Samuirai schrieb:</p>
<blockquote>
<p>Wie kann ich das Array anders übergeben/speichern? So, dass ich dann in dem Objekt eine Kopie davon habe, und nicht nur den Zeiger darauf.</p>
</blockquote>
<p>Indem du dem Konstruktor nicht nur den Pointer übergibst sondern auch noch die Länge, dann ein entsprechendes neues dynamisches Array anlegst mit der entsprechenden Länge und alle Elemente des Originalarrays in das neue Array rüberkopierst. Nicht zu vergessen das delete[] im Destruktor deiner Klasse.</p>
<p>Alternativ nimmst du std::vector, der macht das alles automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851857</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:35:29 GMT]]></title><description><![CDATA[<p>Ein Vector ist doch aber langsamer als ein Array oder?<br />
Es muss nacher schon sehr optimiert laufen.<br />
Ist es wirklich so umständlich, dass ich die Länge übergeben muss und dann einzeln Kopieren? Geht das nicht schneller?</p>
<p>Grüße,<br />
Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851860</guid><dc:creator><![CDATA[Samuirai]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:43:13 GMT]]></title><description><![CDATA[<p>Wenn du eine Kopie haben willst, dann kommst du um das kopieren nicht rum.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Und nein. <code>std::vector</code> ist nicht viel langsamer, als ein C Array. Im Release Modus hast du keinen spürbaren Unterschied. Und wenn du unbedingt meinst, dass es nötig ist, dann kannst du auch noch <code>tr1::array</code> oder <code>boost::array</code> benutzen, was exakt das gleiche ist, wie ein C Array, einfach mit der erwarteten Kopiersemantik (und ein paar anderen nützlichen Sachen) und im Release kocht das ganze auf ein C Array runter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851865</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Übergabe eines Arrays on Sun, 07 Feb 2010 13:48:26 GMT]]></title><description><![CDATA[<p>Achso gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Das habe ich nicht gewusst. Dann werde ich das mit std::vector machen.<br />
Vielen Dank für die schnellen Antworten.</p>
<p>Grüße,<br />
Samu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851869</guid><dc:creator><![CDATA[Samuirai]]></dc:creator><pubDate>Sun, 07 Feb 2010 13:48:26 GMT</pubDate></item></channel></rss>