<?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[Fehler bei Initialisierung von Array mit A[2] = {1, 2};]]></title><description><![CDATA[<p>Ich habe ein Array der Form</p>
<pre><code class="language-cpp">static const long Ntbl[21] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576};
</code></pre>
<p>Das liefert mir jedoch den Fehler</p>
<blockquote>
<p>FastFourierTrans.cpp(7) : error C2059: Syntaxfehler: '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'</p>
</blockquote>
<p>Was ist daran falsch?</p>
<p>Wenn ich das gleich nicht innerhalb der Klasse schreibe, dann tritt der Fehler nicht auf.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181148/fehler-bei-initialisierung-von-array-mit-a-2-1-2</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 04:43:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181148.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 May 2007 11:49:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 11:49:19 GMT]]></title><description><![CDATA[<p>Ich habe ein Array der Form</p>
<pre><code class="language-cpp">static const long Ntbl[21] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576};
</code></pre>
<p>Das liefert mir jedoch den Fehler</p>
<blockquote>
<p>FastFourierTrans.cpp(7) : error C2059: Syntaxfehler: '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'</p>
</blockquote>
<p>Was ist daran falsch?</p>
<p>Wenn ich das gleich nicht innerhalb der Klasse schreibe, dann tritt der Fehler nicht auf.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282336</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 10 May 2007 11:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 11:55:37 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>Wenn ich das gleich nicht innerhalb der Klasse schreibe, dann tritt der Fehler nicht auf.</p>
</blockquote>
<p>Genau das dürfte der Fehler sein - in der Klassendefinition kannst du nur einige elementare Datentypen direkt initialisieren. Alles andere mußt du bei der Definition (für statische Member) bzw. im Ctor füllen:</p>
<pre><code class="language-cpp">//test.h
class test
{
  static const int vals[2];
  ...
};

//test.cpp
const int test::vals[2] = {1,2};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1282343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282343</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 11:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 11:57:50 GMT]]></title><description><![CDATA[<p>CStoll war schneller als ich aber hier hast du ein <a href="http://tutorial.schornboeck.net/staticmember.htm" rel="nofollow">link</a> (Anmerkung erster Treffer bei google bei der Suche nach static und c++)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282345</guid><dc:creator><![CDATA[Brok3r]]></dc:creator><pubDate>Thu, 10 May 2007 11:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 11:59:57 GMT]]></title><description><![CDATA[<p>EDIT: Oha nur 3. ! Ich sollte auf das &quot;Gegenchecken mit eigenem Compiler&quot; vielleicht doch verzichten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> - habe aber mal das &quot;Eigene&quot; stehengelassen:<br />
...</p>
<p>Innerhalb einer Klasse kannst Du kein static const Array initialisieren; das geht lt. Standard nur mit &quot;einfachen Typen&quot; (int, char, double, ...);<br />
Hintergrund: Solche Objekte haben keine Adresse, sondern sind Konstanten, die schon zur Compilezeit aufgelöst werden (sie existieren also zur Laufzeit gar nicht mehr).</p>
<p>Ein Array hingegen braucht IMMER Speicher =&gt; geht also nicht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282346</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 10 May 2007 11:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 13:28:34 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//test.h
class test
{
  static const int vals[2];
  ...
};

//test.cpp
const int test::vals[2] = {1,2};
</code></pre>
</blockquote>
<p>Das hat kompiliert, solange ich die Klasse nicht verwendet habe.</p>
<blockquote>
<p>1&gt;LightModulator2D.obj : error LNK2005: &quot;public: static long const * const FastFourierTrans::Ntbl&quot; (?Ntbl@FastFourierTrans@@2QBJB) ist bereits in AdaptiveAlgorithm.obj definiert.<br />
1&gt;LightModulator2D.obj : error LNK2005: &quot;public: static unsigned char const * const FastFourierTrans::BRcnt&quot; (?BRcnt@FastFourierTrans@@2QBEB) ist bereits in AdaptiveAlgorithm.obj definiert.</p>
</blockquote>
<p>Danach habe ich versucht es ganz normal zu initialisieren, also</p>
<pre><code class="language-cpp">class test
{
  long vals[2];
  ...
};

test::test(void)
{
vals[2] = {1,2};
}
</code></pre>
<p>Das ergibt bei mir den Fehler:</p>
<blockquote>
<p>1&gt;.\FastFourierTrans.cpp(7) : error C2059: Syntaxfehler: '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'<br />
1&gt;.\FastFourierTrans.cpp(7) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'</p>
</blockquote>
<p>Ich verstehe zwar inzwischen warum ein static problematisch ist, aber nicht warum ein const oder ein normales Array sich nicht definieren lässt.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282403</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 10 May 2007 13:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 13:54:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>pospiech schrieb:</p>
<blockquote>
<p>...<br />
Das hat kompiliert, solange ich die Klasse nicht verwendet habe.</p>
<blockquote>
<p>1&gt;LightModulator2D.obj : error LNK2005: &quot;public: static long const * const FastFourierTrans::Ntbl&quot; (?Ntbl@FastFourierTrans@@2QBJB) ist bereits in AdaptiveAlgorithm.obj definiert.<br />
1&gt;LightModulator2D.obj : error LNK2005: &quot;public: static unsigned char const * const FastFourierTrans::BRcnt&quot; (?BRcnt@FastFourierTrans@@2QBEB) ist bereits in AdaptiveAlgorithm.obj definiert.</p>
</blockquote>
</blockquote>
<p>Linkerfehler, weil jedes Objekt nur einmal im gesamten Programm definiert sein darf; sprich: es darf nur eines geben.<br />
Sieht so aus, als hättest Du CStolls &quot;test.cpp&quot; überlesen. <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 ist hier aber wichtig:</p>
<p>CStoll schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//test.h
class test
{
  static const int vals[2]; // Simon2: Deklaration (=&quot;So ist vals aufgebaut&quot;)
  ...
};

//test.cpp
const int test::vals[2] = {1,2}; // Simon2: Definition (=&quot;Das IST vals&quot;) + Initialisierung (=&quot;... und das soll drinstehen&quot;)
</code></pre>
</blockquote>
<p>Die Definition sollte deswegen nicht im Header stehen, weil sie dann eigentlich immer per #include in verschiedene Module kopiert wird ... und der Linker sieht dann jedes Einzelne, wo er aber nur eines braucht / haben will/darf.<br />
Stattdessen schreibt man das dann in &quot;das cpp-File&quot;, das nicht mehr irgendwo #included wird.</p>
<p>pospiech schrieb:</p>
<blockquote>
<p>...<br />
Danach habe ich versucht es ganz normal zu initialisieren, also</p>
<pre><code class="language-cpp">class test
{
  long vals[2];
  ...
};

test::test(void)
{
vals[2] = {1,2};
}
</code></pre>
</blockquote>
<p>Das ist eben keine Intialisierung (sprich: Bei der Erzeugung gesetzte Werte), sondern eine Zuweisung (sprich: Bereits erzeugtem Element werden Werte zugewiesen).<br />
Lösung: Einzeln zuweisen:</p>
<pre><code class="language-cpp">test::test(void)
{
vals[0] = 1;
vals[1] = 2;
}
</code></pre>
<p>Letztlich brauchst Du das aber nicht, wenn Du Obiges (&quot;in .cpp&quot;) machst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282416</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 10 May 2007 13:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 13:53:17 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Lösung: Einzeln zuweisen:</p>
<pre><code class="language-cpp">test::test(void)
{
vals[0] = 1;
vals[1] = 2;
}
</code></pre>
</blockquote>
<p>Äh, mein Array hat 256 Einträge... und damit keine schöne Lösung.<br />
Ich habe es jetzt in die Funktionen die es benötigen ohne ein const reingeschrieben.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282419</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 10 May 2007 13:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 13:55:29 GMT]]></title><description><![CDATA[<p>pospiech schrieb:</p>
<blockquote>
<p>...</p>
<p>Äh, mein Array hat 256 Einträge... und damit keine schöne Lösung.<br />
Ich habe es jetzt in die Funktionen die es benötigen ohne ein const reingeschrieben.</p>
<p>Matthias</p>
</blockquote>
<p>Wie gesagt: Brauchst Du gar nicht ! Schreib Deine Definition und Initialisierung in ein .cpp und schon funktioniert alles und const ist es auch !</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282424</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 10 May 2007 13:55:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Initialisierung von Array mit A[2] = {1, 2}; on Thu, 10 May 2007 14:02:06 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Wie gesagt: Brauchst Du gar nicht ! Schreib Deine Definition und Initialisierung in ein .cpp und schon funktioniert alles und const ist es auch !</p>
</blockquote>
<p>Ja, nur das es in einer anderen cpp Datei aus der ich das alles entnommen habe schon definiert ist. Daher wollte ich den Gültigkeitsbereich auf die Klasse einschränken, damit es noch immer definiert ist wenn ich die andere cpp Datei losgeworden bin.</p>
<p>Ist am Ende auch egal. Ich weiß jetzt was geht und was nicht.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282425</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 10 May 2007 14:02:06 GMT</pubDate></item></channel></rss>