<?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[static map member initialisieren?]]></title><description><![CDATA[<p>Hi leute, ich wollte mal fragen, ob es auch eine möglichkeit gibt, eine statische map innerhalb einer klasse zu initialisieren.<br />
Also folgendes &quot;kürzen&quot;:</p>
<p>myClass.h:</p>
<pre><code class="language-cpp">class myClass
{
    private:
        static map&lt;int, int&gt; m_Map;
};
</code></pre>
<p>myClass.cpp:</p>
<pre><code class="language-cpp">map&lt;int, int&gt; myClass::m_Map; // eigentlich private, klappt aber trotzdem
</code></pre>
<p>Ich habe auch schon versucht, das ganze im constructor (auch definition in myClass.cpp) mittels einer static bool zu machen, allerdings gibts hier trotzdem eine link error, wegen des unaufgelösten symbols.</p>
<p>MfG Krauzi.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266839/static-map-member-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 19:56:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266839.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 May 2010 10:39:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 10:40:00 GMT]]></title><description><![CDATA[<p>Hi leute, ich wollte mal fragen, ob es auch eine möglichkeit gibt, eine statische map innerhalb einer klasse zu initialisieren.<br />
Also folgendes &quot;kürzen&quot;:</p>
<p>myClass.h:</p>
<pre><code class="language-cpp">class myClass
{
    private:
        static map&lt;int, int&gt; m_Map;
};
</code></pre>
<p>myClass.cpp:</p>
<pre><code class="language-cpp">map&lt;int, int&gt; myClass::m_Map; // eigentlich private, klappt aber trotzdem
</code></pre>
<p>Ich habe auch schon versucht, das ganze im constructor (auch definition in myClass.cpp) mittels einer static bool zu machen, allerdings gibts hier trotzdem eine link error, wegen des unaufgelösten symbols.</p>
<p>MfG Krauzi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897454</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 15 May 2010 10:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 10:41:23 GMT]]></title><description><![CDATA[<p>Du kannst die statische Variable nur während der Definition initialisieren, und du darfst die Variable nur einmal in einer Source-Datei definieren. Daher ist die einfache Antwort: Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897456</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 15 May 2010 10:41:23 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 10:46:47 GMT]]></title><description><![CDATA[<p>Wenn du bei der Variante mit dem Flag im Konstruktor ein unaufgelöstes Symbol bekommst, hast du wahrscheinlich die Zeile die trotzdem klappt (also die eigentliche Definition) vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897462</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sat, 15 May 2010 10:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 10:54:34 GMT]]></title><description><![CDATA[<p>achso nene, du hast mich falsch verstanden.<br />
Wenn ich das mittels</p>
<pre><code class="language-cpp">// map&lt;int, int&gt; myClass::m_Map; 
// bewusst auskommentiert

myClass :: myClass( )
{
    static bool initialized;

    if( !initialized )
    {
        map&lt;int, int&gt; m_Map;
        initialized = true;
    }
}
</code></pre>
<p>mache, wird trotzdem nicht initialisiert.<br />
=&gt; Es muss also zwingend ein &quot;map&lt;int, int&gt; myClass::m_Map&quot; in der source file, global deklariert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897465</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 15 May 2010 10:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 10:55:48 GMT]]></title><description><![CDATA[<p>Kleiner Trick:</p>
<pre><code class="language-cpp">class myClass
{
    private:
        static map&lt;int, int&gt;&amp; m_Map()
       {
            static map&lt;int, int&gt; m;
            return m;
       }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1897466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897466</guid><dc:creator><![CDATA[jokester]]></dc:creator><pubDate>Sat, 15 May 2010 10:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 11:54:53 GMT]]></title><description><![CDATA[<p>Krauzi schrieb:</p>
<blockquote>
<p>achso nene, du hast mich falsch verstanden.<br />
Wenn ich das mittels</p>
<pre><code class="language-cpp">// map&lt;int, int&gt; myClass::m_Map; 
// bewusst auskommentiert

myClass :: myClass( )
{
    static bool initialized;
    
    if( !initialized )
    {
        map&lt;int, int&gt; m_Map;
        initialized = true;
    }
}
</code></pre>
<p>mache, wird trotzdem nicht initialisiert.<br />
=&gt; Es muss also zwingend ein &quot;map&lt;int, int&gt; myClass::m_Map&quot; in der source file, global deklariert werden.</p>
</blockquote>
<p>Bei map&lt;int, int&gt; myClass::m_Map wird nichts global deklariert, das ist die einzige und korrekte Art, ein statisches Klassenmember zu definieren.<br />
Und was versprichst du dir von der lokalen Map in Zeile 10? Die gehört da sicher nicht hin.<br />
Edit: was meinst du überhaupt mit initialisieren? Wenn du nur den Standardkonstruktor aufrufen lassen (oder einen anderen) möchtest - das passiert sowieso automatisch.<br />
Ich ging davon aus, dass du die Map gleich zu Anfang mit ein paar Werten füllen lassen möchtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897489</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sat, 15 May 2010 11:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to static map member initialisieren? on Sat, 15 May 2010 12:50:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// ========================================================
// MyClass.hpp
// KEIN using namespace im Header verwenden!

class MyClass
{
    static std::map&lt;int, int&gt; myMap;
};

// ========================================================
// MyClass.cpp

#include &quot;MyClass.hpp&quot;

// Funktion zur Initialisierung
std::map&lt;int, int&gt; InitializeMap();

// Definition des Members
std::map&lt;int, int&gt; MyClass::myMap = InitializeMap();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1897516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897516</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 15 May 2010 12:50:07 GMT</pubDate></item></channel></rss>