<?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[[definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4)]]></title><description><![CDATA[<p>Hi @all<br />
Wiedermal das altbekannte problem mit der instanzierung statischer member Variablen.</p>
<pre><code class="language-cpp">------------- h --------------
class A {
public: 
const static int groesse = 10; 
int nr[groesse]; 
};
-------------cpp --------------
leer
</code></pre>
<p>laut standard kann man integer bereist in der deklaration definieren.<br />
leider hat der gcc kompiler noch immer keine ahnung davon<br />
--&gt; unter windows keine fehlermeldung und linux kommt dann die meldung beim linken, dass er nicht auf &quot;groesse&quot; referenzieren koenne.</p>
<p>also änderung in:</p>
<pre><code class="language-cpp">------------- h --------------
class A {
public: 
const static int groesse;// = 10; 
int nr[groesse]; 
};
-------------cpp --------------
const int A::groesse = 10;
</code></pre>
<p>--&gt; beim compilieren: int nr[groesse] -&gt; error: data member may not have variably modified. buw. windows: error C2057: Konstanter Ausdruck erwartet</p>
<p>klar. er sollte die groesse schon beim parsen des headers kennen.</p>
<p>wie mach ich dies also dem gcc begreiflich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173931/definition-statische-klassen-member-windoof-cl-lt-gt-schlimlux-gcc3-4</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 12:57:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173931.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Feb 2007 11:28:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 11:28:53 GMT]]></title><description><![CDATA[<p>Hi @all<br />
Wiedermal das altbekannte problem mit der instanzierung statischer member Variablen.</p>
<pre><code class="language-cpp">------------- h --------------
class A {
public: 
const static int groesse = 10; 
int nr[groesse]; 
};
-------------cpp --------------
leer
</code></pre>
<p>laut standard kann man integer bereist in der deklaration definieren.<br />
leider hat der gcc kompiler noch immer keine ahnung davon<br />
--&gt; unter windows keine fehlermeldung und linux kommt dann die meldung beim linken, dass er nicht auf &quot;groesse&quot; referenzieren koenne.</p>
<p>also änderung in:</p>
<pre><code class="language-cpp">------------- h --------------
class A {
public: 
const static int groesse;// = 10; 
int nr[groesse]; 
};
-------------cpp --------------
const int A::groesse = 10;
</code></pre>
<p>--&gt; beim compilieren: int nr[groesse] -&gt; error: data member may not have variably modified. buw. windows: error C2057: Konstanter Ausdruck erwartet</p>
<p>klar. er sollte die groesse schon beim parsen des headers kennen.</p>
<p>wie mach ich dies also dem gcc begreiflich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232501</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 21 Feb 2007 11:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 11:33:32 GMT]]></title><description><![CDATA[<p>Machs doch über nen enum.</p>
<pre><code class="language-cpp">enum bla
{
blub = 10
};

int nr[blub];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1232502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232502</guid><dc:creator><![CDATA[xivVerge]]></dc:creator><pubDate>Wed, 21 Feb 2007 11:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 11:35:43 GMT]]></title><description><![CDATA[<p>Du koenntest einen aktuellen gcc z.B. aus der 4er Serie nehmen...<br />
Mit dem funktioniert das erste einwandfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232503</guid><dc:creator><![CDATA[YASC]]></dc:creator><pubDate>Wed, 21 Feb 2007 11:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 11:41:10 GMT]]></title><description><![CDATA[<p>werde es mit dem enum machen...<br />
das mit gcc4.0 würd eich machen, aber da haben die von uns verwendeten mpi-implementierungen so ihre probleme mit <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>
<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232508</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 21 Feb 2007 11:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 12:56:57 GMT]]></title><description><![CDATA[<p>Du kannst doch die Konstante bei der Deklaration initialisieren und bei der Definition dann nicht. Dann hast Du eine optimierbare Konstante und einen Speicherplatz für das Objekt <strong>gleichzeitig</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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">------------- h --------------
class A {
public:
const static int groesse = 10;
int nr[groesse];
};
-------------cpp --------------
const int A::groesse;
</code></pre>
<p>Schlucken sowohl gcc 3.3 als auch 4.1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232576</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 21 Feb 2007 12:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 13:08:49 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>...<br />
laut standard kann man integer bereist in der deklaration definieren.</p>
<p>...meldung beim linken, dass er nicht auf &quot;groesse&quot; referenzieren koenne....</p>
</blockquote>
<p>Im Standard steht aber (IIRC) auch, dass so ein &quot;static const ohne Definition&quot; NICHT &quot;adressierbar&quot; ist. Im Gegensatz zu einem &quot;normalen static const&quot; ...</p>
<p>Ich weiß zwar nicht, ob Du das irgendwo gemacht hast, wollte aber noch kurz darauf hinweisen. Ich weiß jetzt nicht, warum &quot;die von Euch verwendeten mpi-Implementierungen ihre Probleme damit haben&quot;, aber es könnte vllt. genau das sein (die kann man nämlich auch nicht adressieren).</p>
<p>Bei mir (gcc 4.3) funktioniert ebenfalls Dein Obiger Code tadellos.</p>
<p>Dies hier zeigt das Problem</p>
<pre><code class="language-cpp">class A {
public:
const static int groesse = 10;
const static int groesse2;
int nr[groesse];
};

const int A::groesse2 = 20;

void f(int const&amp; g) {
   cout &lt;&lt; g &lt;&lt; &quot;\n&quot;;
}

int main() {
   A myA;
   myA.nr[0] = 3;
   f(myA.groesse); // =&gt; liefert Linkerfehlermeldung &quot;undefined reference to `A::groesse'&quot;
   f(A::groesse); // ebenfalls
   f(myA.groesse2); // =&gt; funktioniert tadellos
   f(A::groesse2); // ebenfalls

...
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232580</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 13:13:44 GMT]]></title><description><![CDATA[<p>okay, das mit dem adressierbar war mir entfallen.<br />
macht aber sinn. &quot;groesse&quot; fungiert quasi als typsicheres &quot;define&quot; und wird nie initialisiert. &quot;groesse2&quot; hingegen schon, aber leider erst, wenn die arrays deklariert worden sind, was dann nicht den gewünschten effekt bringt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232585</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 13:27:36 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>...&quot;groesse&quot; fungiert quasi als typsicheres &quot;define&quot; und wird nie initialisiert. &quot;groesse2&quot; hingegen schon, aber leider erst, wenn die arrays deklariert worden sind, was dann nicht den gewünschten effekt bringt...</p>
</blockquote>
<p>Ähhh, das habe ich jetzt nicht verstanden. Beide &quot;groesse(n)&quot; werden initialisiert.<br />
Und auch groesse2 kannst Du (wie von LordJaxxom beschrieben) zur Compilezeit initialisieren und als Arraygroße verwenden.<br />
Du darfst nur nicht auf die Definition verzichten ....</p>
<p>Oder hab' ich da was mißverstanden ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232594</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 13:35:41 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Du kannst doch die Konstante bei der Deklaration initialisieren und bei der Definition dann nicht. Dann hast Du eine optimierbare Konstante und einen Speicherplatz für das Objekt <strong>gleichzeitig</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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">------------- h --------------
class A {
public:
const static int groesse = 10;
int nr[groesse];
};
-------------cpp --------------
const int A::groesse;
</code></pre>
<p>Schlucken sowohl gcc 3.3 als auch 4.1</p>
</blockquote>
<p>irgendwie habe ich diese antwort übersehen <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 hatte ich auch schon im sinn gehabt. ist denn garantiert, dass dann zur laufzeit grosse==10 ist oder ist das compilerabhängig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232601</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:35:41 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 14:56:23 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Du kannst doch die Konstante bei der Deklaration initialisieren und bei der Definition dann nicht. Dann hast Du eine optimierbare Konstante und einen Speicherplatz für das Objekt <strong>gleichzeitig</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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">------------- h --------------
class A {
public:
const static int groesse = 10;
int nr[groesse];
};
-------------cpp --------------
const int A::groesse;
</code></pre>
<p>Schlucken sowohl gcc 3.3 als auch 4.1</p>
</blockquote>
<p>aber nicht windows <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>&quot;public: static int const A::groesse &quot; ist bereits definiert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232664</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 21 Feb 2007 14:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 14:59:00 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>...<br />
aber nicht windows <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>&quot;public: static int const A::groesse &quot; ist bereits definiert!</p>
</blockquote>
<p>&quot;Windows&quot; ist kein Compiler <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>
<p>Welchen verwendest Du denn ? evtl. VC6.0 ? Der ist ziemlich bekannt für seine &quot;Standard-Unkonformität&quot; (und Bugs)....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232668</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 21 Feb 2007 14:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Wed, 21 Feb 2007 16:00:01 GMT]]></title><description><![CDATA[<p>Würde mich auch interessieren, denn der 8er schluckts:</p>
<pre><code class="language-cpp">// a.cpp
#include &lt;iostream&gt;
using namespace std;

class A {
public:
	static const int groesse = 10;
	int ary[groesse];

	void y() { cout &lt;&lt; sizeof(ary)/sizeof(ary[0]) &lt;&lt; endl; }
};

const int A::groesse;

void y(int const&amp; p);
void y(int const* p);

int main(int argc, char* argv[])
{
	A a;
	a.y();
	y(A::groesse);
	y(&amp;A::groesse);
}

// b.cpp
#include &lt;iostream&gt;
using namespace std;

void y(int const&amp; p) { cout &lt;&lt; p &lt;&lt; endl; }
void y(int const* p) { cout &lt;&lt; *p &lt;&lt; endl; }
</code></pre>
<p>Ausgabe: Drei mal 10.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232708</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 21 Feb 2007 16:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 07:50:22 GMT]]></title><description><![CDATA[<p>sorry, hatte in der tat nirgends erwähnt, dann ich den VC8-compiler verwende. schande über mein haupt.<br />
genauer gesagt verwende ich den vc8 kompiler mit sp1. bei diesem wurde viel verschlimmbessert... also tatsächlich teils harte bugs implementiert (kann z.B. qt4.x nicht mehr ohne patch installieren).</p>
<p>jedenfalls funktioniert das letzte beispiel von LordJaxom so wie er es aufgeührt hat. er definiert ja auch beide in der cpp! zumindest scheint der compiler sowas zu schlucken.</p>
<p>aber es geht <strong>nicht</strong> wenn man aus</p>
<pre><code class="language-cpp">// a.cpp
</code></pre>
<p>eine header datei</p>
<pre><code class="language-cpp">// a.h
</code></pre>
<p>macht<br />
--&gt;(vc8.0) main.obj : error LNK2005: &quot;public: static int const A::groesse&quot; (?groesse@A@@2HB) ist bereits in afile.obj definiert.<br />
Release\dummy.exe : fatal [man]error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.[/man]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232962</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 22 Feb 2007 07:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 08:07:09 GMT]]></title><description><![CDATA[<p>Man sollte auch nichts in einer Header-Datei <strong>definieren</strong> (einzige Ausnahme sind Templates und Inline-Funktionen). Da der Header in verschiedenen Übersetzungseinheiten eingebunden wird, hast du in jeder dieser Übersetzungseinheiten ein Exemplar deiner static-Variable - und das sind idR zu viele für den Linker.</p>
<p>(Und ehe du hier mit &quot;aber ich habe doh Include-Guards verwendet&quot; kommst - die verhindern nur, daß der Header doppelt in eine Übersetzungseinheit eingebunden wird, gegen Linker-Probleme kannst du auf Präprozessor-Ebene nichts mehr machen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232969</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Feb 2007 08:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 09:23:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:<br />
In diesem Thread geht es doch gerade um die Möglichkeit, statische Memberkonstanten bereits in der Klasse mit Werten zu belegen!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Oder ist das in ISO 14882:2003 wieder gestrichen worden? <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/1233035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233035</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 22 Feb 2007 09:23:49 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 09:36:02 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(Und ehe du hier mit &quot;aber ich habe doh Include-Guards verwendet&quot; kommst - die verhindern nur, daß der Header doppelt in eine Übersetzungseinheit eingebunden wird, gegen Linker-Probleme kannst du auf Präprozessor-Ebene nichts mehr machen)</p>
</blockquote>
<p><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="😃"
    /> keine sorge. damit wäre ich schon nicht gekommen. aber man deklariert normalerweise auch keine klassen in der implementierungsdatei, oder?</p>
<p>jedenfalls dreht man sich bei diesem problem einfach im kreis. zumal die compiler die sache eben anders interpretieren. möchte man also den code auf mehreren plattformen zum laufen bringen, so muss man eben mit kleinen &quot;krücken&quot; wie dem enum arbeiten... (um die noch viel schlimmeren <strong>#ifdef</strong>s zu vermeiden)</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:<br />
In diesem Thread geht es doch gerade um die Möglichkeit, statische Memberkonstanten bereits in der Klasse mit Werten zu belegen!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Oder ist das in ISO 14882:2003 wieder gestrichen worden? <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>
</blockquote>
<p>genau darum geht es...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233039</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 22 Feb 2007 09:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 09:38:29 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:<br />
In diesem Thread geht es doch gerade um die Möglichkeit, statische Memberkonstanten bereits in der Klasse mit Werten zu belegen!? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Ja, mit Werten belegen kannst du sie auch bereits in der Deklaration - aber das <code>const int a::groesse;</code> hat trotzdem nichts im Header zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233055</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Feb 2007 09:38:29 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 10:14:19 GMT]]></title><description><![CDATA[<p>okay, dann nochmal ausführlich (wollte mir doch nur ein paar zeilen sparen...)<br />
folgendes funktioniert mit dem vc8 compiler und scheinbar auch mit gcc3.5 und 4.x:</p>
<pre><code class="language-cpp">// main.cpp
#include &lt;iostream&gt;
using namespace std;

class A {
public:
    static const int groesse = 10;
    int ary[groesse];

    void y() { cout &lt;&lt; sizeof(ary)/sizeof(ary[0]) &lt;&lt; endl; }
};

const int A::groesse;

void y(int const&amp; p) { cout &lt;&lt; p &lt;&lt; endl; }
void y(int const* p) { cout &lt;&lt; *p &lt;&lt; endl; } 

int main(int argc, char* argv[])
{
    A a;
    a.y();
    y(A::groesse);
    y(&amp;A::groesse);
}
</code></pre>
<p>folgendes jedoch zumindest mit vc8.0 sp1 <strong>nicht</strong></p>
<pre><code class="language-cpp">// a.h 
#include &lt;iostream&gt; 
using namespace std; 

class A { 
public: 
    static const int groesse = 10; 
    int ary[groesse]; 

    void y() { cout &lt;&lt; sizeof(ary)/sizeof(ary[0]) &lt;&lt; endl; } 
}; 

// a.cpp &lt;-man sehe und staune ;-)
const int A::groesse; 

//main.cpp
void y(int const&amp; p) { cout &lt;&lt; p &lt;&lt; endl; }
void y(int const* p) { cout &lt;&lt; *p &lt;&lt; endl; } 

int main(int argc, char* argv[])
{
    A a;
    a.y();
    y(A::groesse);
    y(&amp;A::groesse);
}
</code></pre>
<p>und so hatte ich es auch gemeint... mit genau diesem code bekommt man mit vc8 eben linker fehler! denn er scheint den standard so auszulegen, dass mit &quot;groesse=10&quot; im header zugleich die definition von A::groesse erfolgte.<br />
dadurch kommt er beim linken mit a.obj natürlich in bedrängnis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233090</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 22 Feb 2007 10:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 10:14:43 GMT]]></title><description><![CDATA[<p>Ah ok. Aus der <strong>kompletten</strong> a.cpp darf man natürlich keine a.h machen. Ich ging davon aus dass muffmolch da selbsttätig selektiert hat <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>
<p>Muss ich später nochmal ausprobieren, momentan installiere ich meinen Arbeitsplatz gerade neu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233091</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 22 Feb 2007 10:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 10:39:19 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Muss ich später nochmal ausprobieren, momentan installiere ich meinen Arbeitsplatz gerade neu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
</blockquote>
<p>*lol* das problem kenn eich nur allzu gut. gestern erst habe ich meinen arbeitsspeicher auf 4Gb augerüstet, damit vista mit 8 instanzen von VS zurecht kommt. scheinbar ist d aber noch was anderes im argen. aber auf ne neuinstallation habe ich derzeit so gar keine lust *end-off topic*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233120</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 22 Feb 2007 10:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to [definition statische klassen member] windoof(cl) &amp;lt;-&amp;gt; schlimlux (gcc3.4) on Thu, 22 Feb 2007 13:03:21 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>...mit genau diesem code bekommt man mit vc8 eben linker fehler! denn er scheint den standard so auszulegen, dass mit &quot;groesse=10&quot; im header zugleich die definition von A::groesse erfolgte....</p>
</blockquote>
<p>Hmmmm, besagte Dein Linkerfehler nicht, dass er keine Definition von A::groesse fand (und nicht, dass er 2 fand) ?</p>
<p>Klingt jetzt blöd, aber vllt. machst Du da doch mit dem Linken was falsch ....<br />
falls nicht: Vergiß mein Post.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233268</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:03:21 GMT</pubDate></item></channel></rss>