<?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[2-D const array in Klasse]]></title><description><![CDATA[<p>Hi!<br />
Ich habe versucht dieses Array</p>
<pre><code class="language-cpp">const int DirTable[8][2] = { 
{  0, -1},	// oben
{  1,  0},	// rechts
{  0,  1},	// unten
{ -1,  0},	// links
{  1, -1},	// rechts-oben
{  1,  1},	// rechts-unten
{ -1,  1},	// links-unten
{ -1, -1} };// links-oben
</code></pre>
<p>in einer Klasse als private zu erstellen, aber es kommt folgende Fehlermeldung:</p>
<pre><code>d:\mission\mission.h(80) : error C2059: Syntaxfehler: '{'
d:\mission\mission.h(80) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen
</code></pre>
<p>Wenn dieser Block mit dem Array außerhalb der Klasse steht funktioniert alles. Woran liegt das denn? Und wie mache ich es denn, wenn es in der Klasse stehen soll?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185212/2-d-const-array-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 02:53:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185212.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2007 16:46:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2-D const array in Klasse on Thu, 17 Jul 2008 17:19:26 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich habe versucht dieses Array</p>
<pre><code class="language-cpp">const int DirTable[8][2] = { 
{  0, -1},	// oben
{  1,  0},	// rechts
{  0,  1},	// unten
{ -1,  0},	// links
{  1, -1},	// rechts-oben
{  1,  1},	// rechts-unten
{ -1,  1},	// links-unten
{ -1, -1} };// links-oben
</code></pre>
<p>in einer Klasse als private zu erstellen, aber es kommt folgende Fehlermeldung:</p>
<pre><code>d:\mission\mission.h(80) : error C2059: Syntaxfehler: '{'
d:\mission\mission.h(80) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen
</code></pre>
<p>Wenn dieser Block mit dem Array außerhalb der Klasse steht funktioniert alles. Woran liegt das denn? Und wie mache ich es denn, wenn es in der Klasse stehen soll?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311675</guid><dc:creator><![CDATA[Shakesbier]]></dc:creator><pubDate>Thu, 17 Jul 2008 17:19:26 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Fri, 22 Jun 2007 16:50:15 GMT]]></title><description><![CDATA[<p>Du kannst einem Attribut erst zur Laufzeit Werte zuweisen...<br />
schreib die Deklaration normal hin und weis dem Array die Werte im Konstruktor der Klasse zu...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311677</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Fri, 22 Jun 2007 16:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Fri, 22 Jun 2007 16:52:44 GMT]]></title><description><![CDATA[<p>Klassenelemente kannst du auf diese Weise nur vorbelegen, wenn sie static sind - und bei deinem Array wäre es vermutlich auch angebracht, das zu machen (schon aus Platzgründen):</p>
<pre><code class="language-cpp">class test
{
private:
  //Achtung: das deklariert das Array nur - die nötige Definition brauchst du noch extra
  static const int DirTable[8][2];
...
};

//Definition des Arrays
const int test::DirTable[8][2] = {...};
</code></pre>
<p>PS: Wie (bzw. ob) du ein objekt-eigenes const-Array vorbelegen kannst, bin ich mir momentan nicht sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311679</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 22 Jun 2007 16:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Fri, 22 Jun 2007 18:37:05 GMT]]></title><description><![CDATA[<p>Hmm, schade leider klappen beide Tipps nicht. Bei beiden kommen unterschiedliche Fehler...</p>
<p>Fehlermeldung bei Tipp von Kuldren:</p>
<pre><code>d:\mission\mission.h(16) : error C2439: 'mission::DirTable': Element konnte nicht initialisiert werden
</code></pre>
<p>Fehlermeldung bei Tipp von CStoll:</p>
<pre><code>mission.obj : error LNK2005: &quot;private: static int const (* mission::DirTable)[2]&quot; (?DirTable@mission@@0QAY01$$CBHA) ist bereits in main.obj definiert.
</code></pre>
<p>Entweder ich habe beim tippen irgendwo Fehler eingebaut oder beide Tipps waren nicht ganz korrekt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311747</guid><dc:creator><![CDATA[Shakesbier]]></dc:creator><pubDate>Fri, 22 Jun 2007 18:37:05 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Fri, 22 Jun 2007 19:12:15 GMT]]></title><description><![CDATA[<p>Shakesbier schrieb:</p>
<blockquote>
<p>Fehlermeldung bei Tipp von Kuldren:</p>
<pre><code>d:\mission\mission.h(16) : error C2439: 'mission::DirTable': Element konnte nicht initialisiert werden
</code></pre>
</blockquote>
<p>Es gibt gegenwärtig keine Möglichkeit, Arrays im Konstruktor zu initialisieren - damit sind const arrays als nicht-statische Member praktisch nicht möglich.</p>
<p>Shakesbier schrieb:</p>
<blockquote>
<p>Fehlermeldung bei Tipp von CStoll:</p>
<pre><code>mission.obj : error LNK2005: &quot;private: static int const (* mission::DirTable)[2]&quot; (?DirTable@mission@@0QAY01$$CBHA) ist bereits in main.obj definiert.
</code></pre>
<p>Entweder ich habe beim tippen irgendwo Fehler eingebaut oder beide Tipps waren nicht ganz korrekt...</p>
</blockquote>
<p>Die Definition darf nicht mehrfach im Programm auftauchen, also nicht im Header stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311767</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 22 Jun 2007 19:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Fri, 22 Jun 2007 21:39:45 GMT]]></title><description><![CDATA[<p>Ich meinte dass du den einzelnen Elementen die Werte im Konstruktor zuweist...</p>
<p>also</p>
<pre><code class="language-cpp">class show{

private:
int arr[10][10];

public:

     show(){
      arr[0][0]=12;
      arr[0][1]=34545;
      .
      .
      .
     }

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311835</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Fri, 22 Jun 2007 21:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Sat, 23 Jun 2007 08:19:43 GMT]]></title><description><![CDATA[<p>Shakesbier schrieb:</p>
<blockquote>
<p>Fehlermeldung bei Tipp von CStoll:</p>
<pre><code>mission.obj : error LNK2005: &quot;private: static int const (* mission::DirTable)[2]&quot; (?DirTable@mission@@0QAY01$$CBHA) ist bereits in main.obj definiert.
</code></pre>
<p>Entweder ich habe beim tippen irgendwo Fehler eingebaut oder beide Tipps waren nicht ganz korrekt...</p>
</blockquote>
<p>Jede Variable darf nur einmal <strong>definiert</strong> werden (da ist es hilfreich, den Unterschied zwischen Deklaration und Definition zu kennen), das gilt auch für dein static-Array. Die Deklaration kommt (zusammen mit derrestlichen Klassendeklaration) in den Header, die Definition &quot;const int test::DirTable[8][2]=...;&quot; in die zugehörige .CPP (du hast doch hoffentlich eine).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9454">@Kuldren</a>: Ja, das wäre ein Ansatz, aber es gibt etwas, was dagegen spricht, ihn hier einzusetzen: das Wörtchen 'const' <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/1311931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311931</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 23 Jun 2007 08:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Sat, 23 Jun 2007 09:52:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp"><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9454">@Kuldren</a>: Ja, das wäre ein Ansatz, aber es gibt etwas, was dagegen spricht, ihn hier einzusetzen: das Wörtchen 'const'
</code></pre>
<p>hehe..sorry..voll überlesen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311997</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Sat, 23 Jun 2007 09:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Sat, 23 Jun 2007 10:50:38 GMT]]></title><description><![CDATA[<p>Shakesbier schrieb:</p>
<blockquote>
<p>Hi!<br />
Ich habe versucht dieses Array</p>
<pre><code class="language-cpp">const int DirTable[8][2] = { 
{  0, -1},	// oben
{  1,  0},	// rechts
{  0,  1},	// unten
{ -1,  0},	// links
{  1, -1},	// rechts-oben
{  1,  1},	// rechts-unten
{ -1,  1},	// links-unten
{ -1, -1} };// links-oben
</code></pre>
<p>in einer Klasse als private zu erstellen, aber es kommt folgende Fehlermeldung:</p>
<pre><code>d:\mission\mission.h(80) : error C2059: Syntaxfehler: '{'
d:\mission\mission.h(80) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen
</code></pre>
<p>Wenn dieser Block mit dem Array außerhalb der Klasse steht funktioniert alles. Woran liegt das denn? Und wie mache ich es denn, wenn es in der Klasse stehen soll?</p>
<p>Gruß Shakesbier</p>
</blockquote>
<p>in der Klasse so:</p>
<pre><code class="language-cpp">class test 
{ 
typedef int (*Ptr)[2];

public: 
    Ptr const DirTable;
    const int d01, d02, d03, d04, d05, d06, d07, d08, 
              d09, d10, d11, d12, d13, d14, d15, d16;

    test() : d01( 0), d02(-1),   /*oben*/
             d03( 1), d04( 0),   /*rechts*/
             d05( 0), d06( 1),   /*unten*/
             d07(-1), d08( 0),   /*links*/
             d09( 1), d10(-1),   /*rechts-oben*/
             d11( 1), d12( 1),   /*rechts-unten*/
             d13(-1), d14( 1),   /*links-unten*/
             d15(-1), d16(-1),   /*links-oben*/
             DirTable((Ptr)&amp;d01) { }

    test&amp; operator= (const test&amp;) {  return *this; }
}; 

int main()
{
    test a;
    int b = a.DirTable[0][1];
}
</code></pre>
<p><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/1312038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1312038</guid><dc:creator><![CDATA[emmax]]></dc:creator><pubDate>Sat, 23 Jun 2007 10:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to 2-D const array in Klasse on Sat, 23 Jun 2007 12:28:41 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Jede Variable darf nur einmal <strong>definiert</strong> werden (da ist es hilfreich, den Unterschied zwischen Deklaration und Definition zu kennen), das gilt auch für dein static-Array. Die Deklaration kommt (zusammen mit derrestlichen Klassendeklaration) in den Header, die Definition &quot;const int test::DirTable[8][2]=...;&quot; in die zugehörige .CPP (du hast doch hoffentlich eine).</p>
</blockquote>
<p>Danke jetzt klappts! Hätte ich eigentlich wissen müssen, bin ja kein blutiger Anfänger mehr. Natürlich kenn ich den Unterschied zwischen Deklaration und Definition... <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 />
Irgendwie stand ich gestern ein bischen aufm Schlauch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1312103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1312103</guid><dc:creator><![CDATA[Shakesbier]]></dc:creator><pubDate>Sat, 23 Jun 2007 12:28:41 GMT</pubDate></item></channel></rss>