<?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 Arrayinitialisierung]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe ein Problem, ein Array zu deklarieren, dessen Grenzen zur Compilezeit noch nicht bekannt sind, der Code sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">int xdims = xPoints.size(); //xPoints, yPoints sind vom typ vector&lt;float&gt;
int ydims = yPoints.size();

float *Coordinates = new float [3][xdims*ydims];
</code></pre>
<p>Der Compiler sagt: &quot;error C2540: Kein konstanter Ausdruck als Arraygrenze<br />
error C2440: 'Initialisierung': 'float (*)[1]' kann nicht in 'float *' konvertiert werden<br />
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.&quot;</p>
<p>Dann geht es weiter mit einer Zuweisung:</p>
<pre><code class="language-cpp">int jj=0;
for(int i=0; i&lt;ydims; i++)
	{for(int j=0; j&lt;xdims ; j++)
		{ Coordinates[0][jj] = xPoints[j];
		  Coordinates[1][jj] = yPoints[i];
		  Coordinates[2][jj] = 0;
		  jj++;
		}//for(int j
	}//for(int i
</code></pre>
<p>Fehlermeldung(en): &quot;error C2109: Index erfordert ein Array oder einen Zeigertyp&quot;</p>
<p>Was kann ich denn da tun, damit das so funktioniert, wie ich mir das vorstelle?</p>
<p>thx,<br />
Isomorphismus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223824/problem-mit-arrayinitialisierung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 12:53:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223824.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Oct 2008 13:43:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Wed, 01 Oct 2008 13:43:48 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich habe ein Problem, ein Array zu deklarieren, dessen Grenzen zur Compilezeit noch nicht bekannt sind, der Code sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">int xdims = xPoints.size(); //xPoints, yPoints sind vom typ vector&lt;float&gt;
int ydims = yPoints.size();

float *Coordinates = new float [3][xdims*ydims];
</code></pre>
<p>Der Compiler sagt: &quot;error C2540: Kein konstanter Ausdruck als Arraygrenze<br />
error C2440: 'Initialisierung': 'float (*)[1]' kann nicht in 'float *' konvertiert werden<br />
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.&quot;</p>
<p>Dann geht es weiter mit einer Zuweisung:</p>
<pre><code class="language-cpp">int jj=0;
for(int i=0; i&lt;ydims; i++)
	{for(int j=0; j&lt;xdims ; j++)
		{ Coordinates[0][jj] = xPoints[j];
		  Coordinates[1][jj] = yPoints[i];
		  Coordinates[2][jj] = 0;
		  jj++;
		}//for(int j
	}//for(int i
</code></pre>
<p>Fehlermeldung(en): &quot;error C2109: Index erfordert ein Array oder einen Zeigertyp&quot;</p>
<p>Was kann ich denn da tun, damit das so funktioniert, wie ich mir das vorstelle?</p>
<p>thx,<br />
Isomorphismus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591502</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Wed, 01 Oct 2008 13:43:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Wed, 01 Oct 2008 14:05:30 GMT]]></title><description><![CDATA[<p>gebrauche Klassen oder ähnliches:</p>
<pre><code class="language-cpp">typedef float Coordinate[3];
Coordinate *coordinates = new Coordinate[xdims*ydims];
</code></pre>
<p>beachte: zugriff auf x-,y- und z-Wert über den 2.Index-Operator:</p>
<pre><code class="language-cpp">Coordinates[jj][0] = xPoints[j];
Coordinates[jj][1] = yPoints[i];
Coordinates[jj][2] = 0;
</code></pre>
<p>weiter:<br />
das dynamische array kann auch durch std::vector ersetzt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591514</guid><dc:creator><![CDATA[wandrer]]></dc:creator><pubDate>Wed, 01 Oct 2008 14:05:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Wed, 01 Oct 2008 14:05:35 GMT]]></title><description><![CDATA[<p>Zweidimensionale dynamische Arrays sind komplizierter zu handhaben. Sie werden als Zeiger auf Zeiger aufgefasst.</p>
<pre><code class="language-cpp">float** Coordinates; // Doppelzeiger
Coordinates = new float*[3]; // 1. Dimension repräsentiert Zeiger auf die einzelnen Elemente der 2. Dimension
for (int i = 0; i &lt; 3; ++i)  // 2. Dimension: Elemente einzeln initialisieren
    Coordinates[i] = new float[xdims*ydims];
</code></pre>
<p>Und in umgekehrter Reihenfolge wieder mit <code>delete[]</code> freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591515</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Oct 2008 14:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Wed, 01 Oct 2008 14:08:58 GMT]]></title><description><![CDATA[<p>hm... hab das konzept evtl falsch erkannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591520</guid><dc:creator><![CDATA[wandrer]]></dc:creator><pubDate>Wed, 01 Oct 2008 14:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Wed, 01 Oct 2008 22:14:40 GMT]]></title><description><![CDATA[<p>Noch ein paar Links:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-211534-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-211534-and-highlight-is-.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591777</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 01 Oct 2008 22:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Thu, 02 Oct 2008 06:59:24 GMT]]></title><description><![CDATA[<p>Benutz einfach <a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">std::vector</a></p>
<p>und dann:</p>
<pre><code class="language-cpp">using namespace std;

// Dopelten Vector anlegen
vector&lt;vector&lt;float&gt;&gt; array;

for(int x = 0; x &lt; xdims; ++x)
  for(int y = 0; y &lt; ydims; ++y)
    // Zuweisung
    array[x][y] = ...
</code></pre>
<p>Oder wie du das da mit deiner &quot;3&quot; machen willst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591861</guid><dc:creator><![CDATA[DataByte]]></dc:creator><pubDate>Thu, 02 Oct 2008 06:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Thu, 02 Oct 2008 07:00:59 GMT]]></title><description><![CDATA[<p>DataByte schrieb:</p>
<blockquote>
<p>und dann:</p>
</blockquote>
<p>Vor dem Zugriff auf die Indizes wäre das Bereitstellen von Speicher noch eine gute Idee <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>
<pre><code class="language-cpp">using namespace std;

// Dopelten Vector anlegen
vector&lt;vector&lt;float&gt;&gt; array;
array.resize(xdims);

for(int x = 0; x &lt; xdims; ++x) {
  array[x].resize(ydims);
  for(int y = 0; y &lt; ydims; ++y)
    // Zuweisung
    array[x][y] = ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1591863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591863</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 02 Oct 2008 07:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Thu, 02 Oct 2008 07:15:33 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>DataByte schrieb:</p>
<blockquote>
<p>und dann:</p>
</blockquote>
<p>Vor dem Zugriff auf die Indizes wäre das Bereitstellen von Speicher noch eine gute Idee <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>
<pre><code class="language-cpp">using namespace std;

// Dopelten Vector anlegen
vector&lt;vector&lt;float&gt;&gt; array;
array.resize(xdims);

for(int x = 0; x &lt; xdims; ++x) {
  array[x].resize(ydims);
  for(int y = 0; y &lt; ydims; ++y)
    // Zuweisung
    array[x][y] = ...
}
</code></pre>
</blockquote>
<p>Jop das währe noch eine optimiertere variante..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591877</guid><dc:creator><![CDATA[DataByte]]></dc:creator><pubDate>Thu, 02 Oct 2008 07:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Thu, 02 Oct 2008 07:17:40 GMT]]></title><description><![CDATA[<p>DataByte schrieb:</p>
<blockquote>
<p>Jop das währe noch eine optimiertere variante..</p>
</blockquote>
<p>Das wäre vor allem eine korrekte Variante. Der Zugriff auf ein Vectorelement, welches nicht existiert, ist undefiniert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591878</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 02 Oct 2008 07:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Arrayinitialisierung on Thu, 02 Oct 2008 10:17:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">boost::multi_array&lt;float,2&gt; arr(boost::extents[xdims][ydims]);
// Zugriff
arr[x][y]=...
</code></pre>
<p>Einfach, effizient und im Gegensatz zu allen anderen Lösungen bilden die Daten tatsächlich ein zusammenhängendes Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591999</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 02 Oct 2008 10:17:04 GMT</pubDate></item></channel></rss>