<?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[Statische Membervariablen und deren Initialisierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal eine Frage. Wie der Titel schon sagt geht es um statische Membervariablen und deren Initialisierung.</p>
<p>Aber ein kleiner Codeschnippsel sagt viel mehr als Worte:</p>
<pre><code class="language-cpp">class myClass
{
public:
   myClass() {}
   static void initStatic(int a_data)
   {
      m_data = a_data;
   }

private:
   static int m_data;
public:
   static int m_data2;
};

int main(int argc, char* argv[])
{
   myClass::initStatic(5);
   // oder
   myClass::m_data2 = 5;

   return 0;
}
</code></pre>
<p>Also, warum klappt das nicht? Warum muss ich solche Variablen immer im global scope initialisieren? Wie hier:</p>
<pre><code class="language-cpp">class myClass
{
public:
   static int m_data2;
};

int myClass::m_data = 4;
int myClass::m_data2 = 5;
</code></pre>
<p>Warum muss ich dort den Datentyp mit angeben? Dieser ist doch schon bei der Klasse festgelegt.</p>
<p>Wäre super wenn mir das einer erklären könnte. Schonmal vielen Dank...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198391/statische-membervariablen-und-deren-initialisierung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 03:29:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198391.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Nov 2007 10:16:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 10:16:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal eine Frage. Wie der Titel schon sagt geht es um statische Membervariablen und deren Initialisierung.</p>
<p>Aber ein kleiner Codeschnippsel sagt viel mehr als Worte:</p>
<pre><code class="language-cpp">class myClass
{
public:
   myClass() {}
   static void initStatic(int a_data)
   {
      m_data = a_data;
   }

private:
   static int m_data;
public:
   static int m_data2;
};

int main(int argc, char* argv[])
{
   myClass::initStatic(5);
   // oder
   myClass::m_data2 = 5;

   return 0;
}
</code></pre>
<p>Also, warum klappt das nicht? Warum muss ich solche Variablen immer im global scope initialisieren? Wie hier:</p>
<pre><code class="language-cpp">class myClass
{
public:
   static int m_data2;
};

int myClass::m_data = 4;
int myClass::m_data2 = 5;
</code></pre>
<p>Warum muss ich dort den Datentyp mit angeben? Dieser ist doch schon bei der Klasse festgelegt.</p>
<p>Wäre super wenn mir das einer erklären könnte. Schonmal vielen Dank...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407191</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 21 Nov 2007 10:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 10:22:30 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Also, warum klappt das nicht? Warum muss ich solche Variablen immer im global scope initialisieren?</p>
</blockquote>
<p>Weil du nur bei der Definition initialisieren kannst.</p>
<p>Tobias W schrieb:</p>
<blockquote>
<p>Warum muss ich dort den Datentyp mit angeben?</p>
</blockquote>
<p>Weil das die Definition der Variablen ist. Das in der Klassendefinition ist nur eine Deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407193</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 21 Nov 2007 10:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 10:32:28 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Also, warum klappt das nicht? Warum muss ich solche Variablen immer im global scope initialisieren? Wie hier:</p>
</blockquote>
<p>Du mußt sie nicht im global scope initialisieren (wenn du dort nichts angibst, werden sie mit 0 vorbelegt), aber du mußt sie im global scope definieren.</p>
<p>(deine &quot;InitStatic()&quot; bzw. die Zuweisung sind übrigens keine Initialisierungen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407197</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Nov 2007 10:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 10:59:16 GMT]]></title><description><![CDATA[<p>Danke, ich habe (mal wieder) Deklaration, Definition und Initialisierung durcheinander gebracht.</p>
<p>Trotzdem stellt sich mir noch die Frage, warum ein &quot;int a;&quot; im Prinzip Deklaration &amp; Definition in einem, aber &quot;static int a;&quot; nur die Deklaration ist?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407209</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 21 Nov 2007 10:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 11:32:52 GMT]]></title><description><![CDATA[<p>das &quot;int a;&quot; ist prinzipiell auch nur eine Deklaration - allerdings werden nicht-statische Member auch mit definiert, wenn du ein Objekt anlegst. Statische Member leben außerhalb der Objekte und müssen deshalb gesondert definiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407243</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Nov 2007 11:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 11:39:42 GMT]]></title><description><![CDATA[<p>Achso, das heißt technisch gesehen sind statische Membervariablen einfach globale Variablen mit Klassenscope.</p>
<p>Ich habe bis jetzt immer gedacht das die statischen Membervariablen im Codesegment des Programms liegen, stimmt das dann überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407248</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 21 Nov 2007 11:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 12:40:29 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Achso, das heißt technisch gesehen sind statische Membervariablen einfach globale Variablen mit Klassenscope.</p>
</blockquote>
<p>Ja, so kannst du das sehen</p>
<blockquote>
<p>Ich habe bis jetzt immer gedacht das die statischen Membervariablen im Codesegment des Programms liegen, stimmt das dann überhaupt?</p>
</blockquote>
<p>Müsste stimmen (wobei ich mir nicht sicher bin, wie die Speicherbereiche jenseits von Heap und Stack genau heißen). Aber globale Variablen liegen auch im Code-Segment.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407286</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Nov 2007 12:40:29 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Membervariablen und deren Initialisierung on Wed, 21 Nov 2007 14:15:33 GMT]]></title><description><![CDATA[<p>Super, danke, der Nebel hat sich somit wieder ein Stück gelegt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407370</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 21 Nov 2007 14:15:33 GMT</pubDate></item></channel></rss>