<?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[Dynamisches mehrdimmensionales array]]></title><description><![CDATA[<p>Hallo, ich möchte ein mehrdimmensionales dynamisches array erstellen welches ein Spielfeld darstellen soll. Hierbei soll jeder &quot;Kachel&quot; des Spielfeldes bestehend aus breite und laenge (int) eine hoehe (float) zugewiesen werden.</p>
<p>Nach langem Probieren habe ich es auch geschafft. Allerdings nur so, dass das Array (mit Namen &quot;Kachel&quot;)im Konstruktor bekannt ist und nicht in der gesamten Klasse <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="😉"
    /></p>
<pre><code class="language-cpp">#include &lt;Vector&gt;
#pragma once

using namespace std;

class Spielfeld{

public:

	Spielfeld(int breite, int laenge) {

		vector&lt; vector&lt;float&gt; &gt; Kachel(breite); 
		for (int i = 0; i &lt; breite; i++) 
		{
			Kachel[i].resize(laenge);
		}

		Kachel[1][1]=7;  
		//Hier funktioniert es, da das Array &quot;Kachel&quot; im Konstruktor bekannt ist.
	}

	void set_hoehe (int breite,int laenge, float hoehe)
	{
		Kachel[breite][laenge]=hoehe;
		//Geht nicht, da &quot;Kachel&quot; nur im Konstruktor bekannt ist.
	}
};
</code></pre>
<p>Wie kann ich das Array &quot;Kachel&quot; so angeben, dass es in der gesamten Klasse bekannt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188210/dynamisches-mehrdimmensionales-array</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:17:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188210.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Jul 2007 11:02:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 11:03:38 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte ein mehrdimmensionales dynamisches array erstellen welches ein Spielfeld darstellen soll. Hierbei soll jeder &quot;Kachel&quot; des Spielfeldes bestehend aus breite und laenge (int) eine hoehe (float) zugewiesen werden.</p>
<p>Nach langem Probieren habe ich es auch geschafft. Allerdings nur so, dass das Array (mit Namen &quot;Kachel&quot;)im Konstruktor bekannt ist und nicht in der gesamten Klasse <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="😉"
    /></p>
<pre><code class="language-cpp">#include &lt;Vector&gt;
#pragma once

using namespace std;

class Spielfeld{

public:

	Spielfeld(int breite, int laenge) {

		vector&lt; vector&lt;float&gt; &gt; Kachel(breite); 
		for (int i = 0; i &lt; breite; i++) 
		{
			Kachel[i].resize(laenge);
		}

		Kachel[1][1]=7;  
		//Hier funktioniert es, da das Array &quot;Kachel&quot; im Konstruktor bekannt ist.
	}

	void set_hoehe (int breite,int laenge, float hoehe)
	{
		Kachel[breite][laenge]=hoehe;
		//Geht nicht, da &quot;Kachel&quot; nur im Konstruktor bekannt ist.
	}
};
</code></pre>
<p>Wie kann ich das Array &quot;Kachel&quot; so angeben, dass es in der gesamten Klasse bekannt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334257</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Sun, 29 Jul 2007 11:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 11:14:29 GMT]]></title><description><![CDATA[<p>Das liegt wohl daran das du das Array &quot;Kachel&quot; <strong>lokal</strong> im Konstruktor anlegst. Nach verlassen des Konstruktors wird das wieder gelöscht. Schreibe das Array einfach als Membervariable in die Klassendeklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334262</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Sun, 29 Jul 2007 11:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 14:16:34 GMT]]></title><description><![CDATA[<p>Das Problem ist ja, das ich schon bei der Deklaration die Breite mit angebe.</p>
<pre><code class="language-cpp">vector&lt; vector&lt;float&gt; &gt; Kachel(breite);
</code></pre>
<p>Wie kann ich das als Member in die Klassendekleration schreiben, ohne schon die Breite angeben zu müssen, die ich erst im Konstruktor erfahre?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334372</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 14:27:25 GMT]]></title><description><![CDATA[<p>per initialisierungsliste?</p>
<pre><code class="language-cpp">class Spielfeld{

public:

    Spielfeld(int breite, int laenge) : Kachel(breite) {

        for (int i = 0; i &lt; breite; i++) 
        {
            Kachel[i].resize(laenge);
        }

        Kachel[1][1]=7;  
        //Hier funktioniert es, da das Array &quot;Kachel&quot; im Konstruktor bekannt ist.
    }

    void set_hoehe (int breite,int laenge, float hoehe)
    {
        Kachel[breite][laenge]=hoehe;
        //Geht nicht, da &quot;Kachel&quot; nur im Konstruktor bekannt ist.
    }
private:
    vector&lt; vector&lt;float&gt; &gt; Kachel; 
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1334384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334384</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 14:38:49 GMT]]></title><description><![CDATA[<p>Danke!</p>
<p>Ich bin eigentlich JAVA Programmierer und stehe mit der Initialisierungsliste auf'm Kriegsfuß.</p>
<p>Wo kann man nachlesen, ich welchen Fällen man die Initialisierungsliste verwenden soll / muß?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334390</guid><dc:creator><![CDATA[Andreas XXL]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 14:41:12 GMT]]></title><description><![CDATA[<p>Initialisierungslisten brauchst du eigentlich immer wenn du Klasseneigenen Variablen ein Argument für den Konstruktor mitgeben musst <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334393</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Sun, 29 Jul 2007 18:44:15 GMT]]></title><description><![CDATA[<p>Andreas XXL schrieb:</p>
<blockquote>
<p>...Wo kann man nachlesen, ich welchen Fällen man die Initialisierungsliste verwenden soll / muß?</p>
</blockquote>
<p>Soll&gt; Immer, wo es geht.<br />
Muss&gt; bei const- und Referenz-Membern</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334523</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 29 Jul 2007 18:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Mon, 30 Jul 2007 06:20:02 GMT]]></title><description><![CDATA[<p>darthdespotism schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Spielfeld{
public:
        
    Spielfeld(int breite, int laenge) : Kachel(breite) {

        
        for (int i = 0; i &lt; breite; i++) 
        {
            Kachel[i].resize(laenge);
        }

        Kachel[1][1]=7;  
        //Hier funktioniert es, da das Array &quot;Kachel&quot; im Konstruktor bekannt ist.
    }
</code></pre>
</blockquote>
<p>Das geht sogar noch kürzer - wenn man weiß, daß der vector&lt;&gt;-Ctor zwei Parameter übernehmen kann:</p>
<pre><code class="language-cpp">Spielfeld(int breite,int laenge)
: Kachel(breite,vector&lt;double&gt;(laenge))
{
  Kachel[1][1]=7;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1334723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334723</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Jul 2007 06:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches mehrdimmensionales array on Mon, 30 Jul 2007 07:45:22 GMT]]></title><description><![CDATA[<p>Andreas XXL schrieb:</p>
<blockquote>
<p>Ich bin eigentlich JAVA Programmierer und stehe mit der Initialisierungsliste auf'm Kriegsfuß.</p>
<p>Wo kann man nachlesen, ich welchen Fällen man die Initialisierungsliste verwenden soll / muß?</p>
</blockquote>
<p>Um es genauer zu erklären:</p>
<p>Wenn du bereits im Konstruktorrumpf bist, existieren die Membervariablen bereits. Daher musst du immer dann auf die Initialisierungsliste zurückgreifen wenn eine nächträgliche Änderung nicht möglich ist (const), bzw. es eine Zuordnung geben muss (Referenzen). Zusätzlich wird Standardmäßig bei Klassen der Standardkonstruktor aufgerufen, was in manchen Fällen nicht gewünscht ist, oder die Basisklasse soll über einen anderen Konstruktor als dem Basiskonstruktor initialisiert werden. Auch für diese Fälle ist die Initialisierungsliste zwingend zu verwenden.</p>
<p>Die Initialisierungsliste wiederum tritt bereits der Erstinitialisierung in Kraft, hier musst du nur aufpassen das du keine Abhängigkeiten zwischen den Membervariablen einbaust, oder sicherstellst, das die Initialisierung in Reihenfolge der Deklaration geschieht (Unabhängig von der Reihenfolge in der Initialisierungsliste werden Member in Reihenfolge ihrer Deklaration angelegt).</p>
<p>Daher ist es grundsätzlich sinnvoll, unabhängig von dem &quot;Mussfall&quot;, die Initialisierungsliste zu verwenden, um unnötige Mehrfachinitialisierung zu vermeiden. Letzteres mag bei den Basistypen noch unproblematisch sein, bei komplexen Klassen spielt es aber eine Große Rolle.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334758</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 30 Jul 2007 07:45:22 GMT</pubDate></item></channel></rss>