<?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[Mehrdimensionales Array von eigener Klasse initialisieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will meine eigene Klasse TFeld als 2 dimensionales array initialisieren.</p>
<pre><code class="language-cli">TFeld **Spielfeld = new TFeld*[999][999];

for(int i = 0; i &lt;= 999; i++)
	for(int j = 0; i &lt;= 999; i++)
	{
		Spielfeld[i][j] = new TFeld(i,j,0);
	}
</code></pre>
<pre><code>Error: Ein Wert vom Typ &quot;&quot;TFeld *(*)[999]&quot;&quot; kann nicht zum Initialisieren einer Entiät vom Typ &quot;&quot;TFeld**&quot;&quot; verwendet werden.
</code></pre>
<p>könnt ihr mir helfen was ich da ändern muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291273/mehrdimensionales-array-von-eigener-klasse-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 20:33:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291273.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Aug 2011 14:48:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 14:48:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will meine eigene Klasse TFeld als 2 dimensionales array initialisieren.</p>
<pre><code class="language-cli">TFeld **Spielfeld = new TFeld*[999][999];

for(int i = 0; i &lt;= 999; i++)
	for(int j = 0; i &lt;= 999; i++)
	{
		Spielfeld[i][j] = new TFeld(i,j,0);
	}
</code></pre>
<pre><code>Error: Ein Wert vom Typ &quot;&quot;TFeld *(*)[999]&quot;&quot; kann nicht zum Initialisieren einer Entiät vom Typ &quot;&quot;TFeld**&quot;&quot; verwendet werden.
</code></pre>
<p>könnt ihr mir helfen was ich da ändern muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106014</guid><dc:creator><![CDATA[Mra]]></dc:creator><pubDate>Sun, 14 Aug 2011 14:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 16:24:02 GMT]]></title><description><![CDATA[<p>Deine Variable hat einen doppelten Pointer und du willst einen dreifachen Initialisieren. Das muss schon rechts und links das gleiche stehen. Also</p>
<pre><code class="language-cpp">TFeld ***Spielfeld = ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2106057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106057</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Sun, 14 Aug 2011 16:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 16:24:28 GMT]]></title><description><![CDATA[<p><code>Spielfeld</code> ist ein Zeiger auf ein Zeiger auf ein <code>TFeld</code> . <code>new TFeld*[999][999]</code> liefert dir einen Zeiger auf 999 Zeiger auf TFeld. Klar geht das nicht zusammen.</p>
<p>Da du dich mit Pointern icht wirklich auszukennen scheinst (ist auch schwer und ich hoffe meine eigene Aufschlüsselung von dem was <code>new TFeld*[999][999]</code> gibt ist richtig - bei so viel Indirektion kommt man leicht durcheinander): Warum benutzt du nicht std::vector, oder Boost (Multi-)Array oder eine eigene kleine Spielfeldklasse? Praktisch alles ist besser, als zigfache Pointerindirektion. Dafür gibt es auch einen Namen: <a href="http://c2.com/cgi/wiki?ThreeStarProgrammer" rel="nofollow">Drei Sterne Programmierer</a> (das ist eine negative Bezeichnung!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106058</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 14 Aug 2011 16:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 16:35:53 GMT]]></title><description><![CDATA[<p>Vergiss was ich oben geschrieben habe. Das war nicht ganz richtig. Es sollte vielleicht besser so aussehen:</p>
<pre><code class="language-cpp">TFeld* Spielfeld[999][999];

	for(int i=0; i&lt;999; ++i)
		for(int j=0; j&lt;999; ++j)
			Spielfeld[i][j] = new TFeld(i, j, 0);
</code></pre>
<p>Schönen Gruß</p>
<p>Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106062</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Sun, 14 Aug 2011 16:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 16:54:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12071">@Max3000</a>: Syntaktisch zwar richtig, aber manche Systeme haben recht strenge Beschränkungen was die Stackgröße angeht. 1 Million Pointer sind schon ganz schön heftig und sollten vielleicht doch (wie vom Threadersteller geplant) dynamisch angefordert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106069</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 14 Aug 2011 16:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 23:47:34 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12071">@Max3000</a>: Syntaktisch zwar richtig, aber manche Systeme haben recht strenge Beschränkungen was die Stackgröße angeht. 1 Million Pointer sind schon ganz schön heftig und sollten vielleicht doch (wie vom Threadersteller geplant) dynamisch angefordert werden.</p>
</blockquote>
<p>Tatsache. Kompilieren klappt zwar, aber beim ausführen kommt ein Laufzeitfehler mit stack overflow.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106159</guid><dc:creator><![CDATA[mra]]></dc:creator><pubDate>Sun, 14 Aug 2011 23:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Sun, 14 Aug 2011 23:52:19 GMT]]></title><description><![CDATA[<p>Nebenbei ist bei 999 Elementen pro Dimension der höchste gültige Index 998, jedoch <strong>nicht</strong> 999, wie du in deiner Schleife annimmst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106161</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 14 Aug 2011 23:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Mon, 15 Aug 2011 00:03:09 GMT]]></title><description><![CDATA[<p>Ich stimme SeppJ zu, dass boost::multi_array hier eine deutlich sinnvollere Lösung wäre. Der Vollständigkeit halber aber hier die Syntax für den flachen Zeiger:</p>
<pre><code class="language-cpp">TFeld *(*Spielfeld)[1000] = new TFeld*[1000][1000];
</code></pre>
<p>Übrigens: Unter der Annahme, dass du den Borland-Compiler benutzt, sähe ich an deiner Stelle davon ab, ein Präfix für meine Klassen zu benutzen, das bereits von der mitgelieferten Grafikbibliothek beansprucht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106162</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Mon, 15 Aug 2011 00:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Mon, 15 Aug 2011 08:15:25 GMT]]></title><description><![CDATA[<p>Wobei ich seldon jedoch nicht zustimme ist, dass boost::multi_array die beste Lösung wäre. Ich habe da negativste Performanceerfahrung mit gemacht. Das kann wohl einfach zu viel und bringt zu viel Overhead mit, der hier anscheinend nicht gebraucht würde. Meine Empfehlung für ein Spielfeld mit statischen Dimensionen: Ein normaler vector mit 999x999 Länge und einem Wrapper drum, der Zugriffe auf (x,y) auf x+999*y umlenkt. Geht ab wie nix.</p>
<p>Außerdem: So wie es aussieht, ist hier keine Polymorphie im Spiel. Daher würde ich in so einem Vector (oder egal welchem Container) konkrete Objekte speichern, keine Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106230</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Aug 2011 08:15:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionales Array von eigener Klasse initialisieren on Mon, 15 Aug 2011 08:21:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Meine Empfehlung für ein Spielfeld mit statischen Dimensionen: Ein normaler vector mit 999x999 Länge und einem Wrapper drum, der Zugriffe auf (x,y) auf x+999*y umlenkt. Geht ab wie nix.</p>
</blockquote>
<p>In diese Kerbe haue ich auch. Und dann würde ich vielleicht gleich 1024x999 nehmen und 2,5% Space gegen noch eine Hauch von Speed umtauschen. Man hat ja einen Wrapper.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106231</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 15 Aug 2011 08:21:07 GMT</pubDate></item></channel></rss>