<?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[Arrays treiben mich in den Wahnsinn...]]></title><description><![CDATA[<p>Hi Leute, ich hab ein enormes Problem mit Arrays und rumgooglen und in Foren stöbern bringt nichts und ich bin jetzt langsam echt angepisst von C++ und brauche dringend Hilfe ^^</p>
<p>Also folgendes:</p>
<p>Es geht um die Variable &quot;cube&quot;</p>
<p>Headerdatei</p>
<pre><code class="language-cpp">class Cube{
	public:
		int cubesize;
		Stone *cube;
		Cube() {}
		Cube(int cubesize);
		string identifyColor(float color[3]);
	private:
		bool isCorner(int x, int y, int z);
		void setStone(int x, int y, int z);		
};
</code></pre>
<pre><code class="language-cpp">Cube :: Cube(int sizeOfCube)
	{
		cubesize = sizeOfCube;
		cube = new Stone[cubesize,cubesize,cubesize];

		// Zum Start hin wird jeder Stein erstmal leer initialisiert.
		for(int x = 0; x &lt; cubesize; x++)
		{
			for(int y = 0; y &lt; cubesize; y++)
			{
				for(int z = 0; z &lt; cubesize; z++)
				{
					cube[x,y,z] = Stone();
				}
			}
		}

                // Stein vorne oben links mit Farben grün-rot-gelb
		cube[0,0,0] = Stone(Side::Front, Edge::ELeft, Edge::ETop);
</code></pre>
<p>hier habe ich nun das Problem, dass nicht nur cube[0,0,0] mit diesem Stein initialisert werden, sondern cube[0,0,x] werden ALLE mit genau dieser Instanz da oben initialisiert. ich weiß nicht was ich dagegen tun kann.</p>
<p>Den Pointer lege ich erst heir fest, da seine Größe zur Laufzeit geändert werden soll. Wenn ich das Ganze versuche so zu machen:</p>
<pre><code class="language-cpp">cube = new Stone[cubesize][cubesize][cubesize];
</code></pre>
<p>meckert der Compiler, weil er unbedingt möchte, das cubesize eine Konstante ist, was ich ihm halt nicht geben kann... auch wenn ich in den Konstruktor folgendes schreibe, meckert er wegen der Konstanten rum</p>
<pre><code class="language-cpp">Cube :: Cube(const int sizeOfCube)
{
		cubesize = sizeOfCube;
		cube = new Stone[sizeOfCube][sizeOfCube][sizeOfCube];
</code></pre>
<p>Also ich bin irgendwie am Ende mit meinem Latein hier.<br />
Wenn mir irgendwer helfen kann, wäre ich wirklich dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307546/arrays-treiben-mich-in-den-wahnsinn</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 18:01:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307546.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Aug 2012 14:36:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 14:36:15 GMT]]></title><description><![CDATA[<p>Hi Leute, ich hab ein enormes Problem mit Arrays und rumgooglen und in Foren stöbern bringt nichts und ich bin jetzt langsam echt angepisst von C++ und brauche dringend Hilfe ^^</p>
<p>Also folgendes:</p>
<p>Es geht um die Variable &quot;cube&quot;</p>
<p>Headerdatei</p>
<pre><code class="language-cpp">class Cube{
	public:
		int cubesize;
		Stone *cube;
		Cube() {}
		Cube(int cubesize);
		string identifyColor(float color[3]);
	private:
		bool isCorner(int x, int y, int z);
		void setStone(int x, int y, int z);		
};
</code></pre>
<pre><code class="language-cpp">Cube :: Cube(int sizeOfCube)
	{
		cubesize = sizeOfCube;
		cube = new Stone[cubesize,cubesize,cubesize];

		// Zum Start hin wird jeder Stein erstmal leer initialisiert.
		for(int x = 0; x &lt; cubesize; x++)
		{
			for(int y = 0; y &lt; cubesize; y++)
			{
				for(int z = 0; z &lt; cubesize; z++)
				{
					cube[x,y,z] = Stone();
				}
			}
		}

                // Stein vorne oben links mit Farben grün-rot-gelb
		cube[0,0,0] = Stone(Side::Front, Edge::ELeft, Edge::ETop);
</code></pre>
<p>hier habe ich nun das Problem, dass nicht nur cube[0,0,0] mit diesem Stein initialisert werden, sondern cube[0,0,x] werden ALLE mit genau dieser Instanz da oben initialisiert. ich weiß nicht was ich dagegen tun kann.</p>
<p>Den Pointer lege ich erst heir fest, da seine Größe zur Laufzeit geändert werden soll. Wenn ich das Ganze versuche so zu machen:</p>
<pre><code class="language-cpp">cube = new Stone[cubesize][cubesize][cubesize];
</code></pre>
<p>meckert der Compiler, weil er unbedingt möchte, das cubesize eine Konstante ist, was ich ihm halt nicht geben kann... auch wenn ich in den Konstruktor folgendes schreibe, meckert er wegen der Konstanten rum</p>
<pre><code class="language-cpp">Cube :: Cube(const int sizeOfCube)
{
		cubesize = sizeOfCube;
		cube = new Stone[sizeOfCube][sizeOfCube][sizeOfCube];
</code></pre>
<p>Also ich bin irgendwie am Ende mit meinem Latein hier.<br />
Wenn mir irgendwer helfen kann, wäre ich wirklich dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246727</guid><dc:creator><![CDATA[Goldfish]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 14:41:18 GMT]]></title><description><![CDATA[<p>Wenn dich Arrays in den Wahnsinn treiben, nimm std::vector.</p>
<p>BTW: cube[0,0,0] tut nicht das, was du vermutest. Da hatten wir gerade erst einen ähnlichen Thread...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246731</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 14:49:54 GMT]]></title><description><![CDATA[<p>Du hast Arrays und deren Syntax leider überhaupt nicht verstanden.<br />
Schnapp dir ein Grundlagenbuch, und lern erstmal Grundlagen, bevor sowas kommt:</p>
<pre><code class="language-cpp">cube[x,y,z] = Stone();
</code></pre>
<p>Hier schreibst du nichts anderes als einfach</p>
<pre><code class="language-cpp">cube[z] = Stone();
</code></pre>
<p>denn in C++ spricht man Elemente in MD-Arrays durch mehrfache Indize an:</p>
<pre><code class="language-cpp">cube[x][y][z] = Stone();
</code></pre>
<p>Deine Variante dürfte unter anderem ein/zwei Warnung(en) ala &quot;<em>warning: left operand of comma operator is ignored</em>&quot; werfen - gib immer die Compiler-Flags -Wall und -Wextra an!</p>
<p>Nächster Fehler. Du benutzt C-Arrays, also &quot;echte&quot; Arrays. Was du aber mit Sicherheit willst, ist <code>std::vector</code> . Denn<br />
<strong>1</strong>. Bin ich sicher, dir ist nicht klar wie einfach es ist, <strong>mit manuell allokiertem Speicher</strong> ohne entsprechende Absicherungsmethoden (RAII <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Smartpointer) <strong>Speicherlecks zu erzeugen</strong>. Versuche immer, so wenig Speicher wie möglich selbst zu allokieren/zu managen. Dazu gehört auch implizites Zeugs wie <code>createXX</code> X Methodenaufrufe bei APIs, die dann auch noch verlangen, das mit <code>destroyXXX</code> freizugeben, weil es sonst gar nicht geschieht. Was für eine Frechheit!<br />
<strong>2</strong>. Habe ich die (glücklicherweise bisher noch unbegründete) Vermutung, dass du den <strong>Speicher nicht mal IRGENDWIE freigibst.</strong> Merke: In C++ gibt es <strong>keine Garbage Collection</strong>, wie bei Javascript, Java, PHP o.ä.<br />
<strong>3</strong>. Was du willst, sind <strong>dynamische Arrays</strong>, d. h. solche, die ihre Größe ganz einfach zur Laufzeit ändern können. Die gibt es - man nennt sie <a href="http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CCUQFjAA&amp;url=http%3A%2F%2Fwww.cplusplus.com%2Freference%2Fstl%2F&amp;ei=3Co-UNiGOq_N4QTBt4DwCA&amp;usg=AFQjCNGTnLVnatukRW0zPHLRZ2PbQrkmPw&amp;sig2=2ZvyYHBh2-6nNtR8ik58sA" rel="nofollow"><strong>STL-Container</strong></a>, und sie sind echt toll, besonders der bereits genannte<a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">** <code>std::vector</code> **</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246732</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 14:48:52 GMT]]></title><description><![CDATA[<p>Schau mal hier: <a href="http://www.c-plusplus.net/forum/307495" rel="nofollow">http://www.c-plusplus.net/forum/307495</a></p>
<p>Da hab ich gestern zu dieser falschen Schreibweise z.b.: int var [8,9] eine Frage gestellt.</p>
<p>Vector &gt; Arrays</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246734</guid><dc:creator><![CDATA[arrAy_]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 15:10:40 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Schnapp dir ein Grundlagenbuch, und lern erstmal Grundlagen</p>
</blockquote>
<p>Wieso empfiehlst du eigentlich jedem ein Buch. Ich denke, nicht einmal die Hälfte aller Leute, die hier Anfängerfragen stellen, haben vor C++ zu lernen. Viele wollen nur ihre Prüfung/ ihr Semester bestehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246740</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:10:40 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 15:14:48 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Schnapp dir ein Grundlagenbuch, und lern erstmal Grundlagen</p>
</blockquote>
<p>Wieso empfiehlst du eigentlich jedem ein Buch. Ich denke, nicht einmal die Hälfte aller Leute, die hier Anfängerfragen stellen, haben vor C++ zu lernen. Viele wollen nur ihre Prüfung/ ihr Semester bestehen.</p>
</blockquote>
<p>Meldest du dich freiwillig, bei jeder dieser Art von Fragen die ersten drei Kapitel aus einen Buch vorzukauen, so dass man hinterher eine Prüfung bestehen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246741</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 15:43:45 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Schnapp dir ein Grundlagenbuch, und lern erstmal Grundlagen</p>
</blockquote>
<p>Wieso empfiehlst du eigentlich jedem ein Buch. Ich denke, nicht einmal die Hälfte aller Leute, die hier Anfängerfragen stellen, haben vor C++ zu lernen. Viele wollen nur ihre Prüfung/ ihr Semester bestehen.</p>
</blockquote>
<p>Meldest du dich freiwillig, bei jeder dieser Art von Fragen die ersten drei Kapitel aus einen Buch vorzukauen, so dass man hinterher eine Prüfung bestehen kann?</p>
</blockquote>
<p>Wieso, solche Fragesteller wollen meist nur eine compilierbare Antwort, mehr nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246749</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 16:03:02 GMT]]></title><description><![CDATA[<p>IMHO haben Leute, die nur ihre Prüfung bestehen wollen, keine Antwort verdient. Aber da wir an das gute im Menschen glauben, gehen wir bei jeder Frage davon aus, dass der Fragesteller sich auch für die Materie interessiert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246759</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 29 Aug 2012 16:03:02 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 17:19:15 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Wieso, solche Fragesteller wollen meist nur eine compilierbare Antwort, mehr nicht.</p>
</blockquote>
<p>Solche Fragensteller gehören aber nicht zur Zielgruppe des Forums. Das ist eher für Leute gedacht, die wirklich was lernen wollen. Wer Komplettlösungen will, soll sich (vermutlich kostenpflichtige) Nachhilfe geben lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246779</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Aug 2012 17:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays treiben mich in den Wahnsinn... on Wed, 29 Aug 2012 17:38:04 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Wieso, solche Fragesteller wollen meist nur eine compilierbare Antwort, mehr nicht.</p>
</blockquote>
<p>Solche Fragensteller gehören aber nicht zur Zielgruppe des Forums. Das ist eher für Leute gedacht, die wirklich was lernen wollen. Wer Komplettlösungen will, soll sich (vermutlich kostenpflichtige) Nachhilfe geben lassen.</p>
</blockquote>
<p>touche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246783</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 29 Aug 2012 17:38:04 GMT</pubDate></item></channel></rss>