<?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[Globale Initialisierung]]></title><description><![CDATA[<p>Hallo,<br />
ich will in einem Header eine globale const map&lt;char, char&gt; definieren, die Decodierungs-Informationen enthält.</p>
<p>Der einzige Weg, der mir einfällt, wäre dieser:</p>
<pre><code class="language-cpp">map&lt;char, char&gt; initialize_foo()
{
	map&lt;char, char&gt; result;
	result['a'] = '7';
	result['b'] = '2';
	//...
	return result;
}

const map&lt;char, char&gt; foo = initialize_foo();
</code></pre>
<p>Allerdings finde ich es blöd, wenn ich für jede globale Variable eine neue Funktion schreiben muss.<br />
Gibt es da keinen besseren Weg?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297558/globale-initialisierung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 08:24:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297558.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jan 2012 22:08:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globale Initialisierung on Sun, 01 Jan 2012 22:08:40 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich will in einem Header eine globale const map&lt;char, char&gt; definieren, die Decodierungs-Informationen enthält.</p>
<p>Der einzige Weg, der mir einfällt, wäre dieser:</p>
<pre><code class="language-cpp">map&lt;char, char&gt; initialize_foo()
{
	map&lt;char, char&gt; result;
	result['a'] = '7';
	result['b'] = '2';
	//...
	return result;
}

const map&lt;char, char&gt; foo = initialize_foo();
</code></pre>
<p>Allerdings finde ich es blöd, wenn ich für jede globale Variable eine neue Funktion schreiben muss.<br />
Gibt es da keinen besseren Weg?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162740</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sun, 01 Jan 2012 22:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Sun, 01 Jan 2012 22:18:15 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Gibt es da keinen besseren Weg?</p>
</blockquote>
<ol>
<li>Keine globalen Variablen verwenden</li>
<li>Pack deine Map in eine Klasse und verwend den Konstruktor...</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2162741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162741</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 01 Jan 2012 22:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Sun, 01 Jan 2012 22:19:56 GMT]]></title><description><![CDATA[<p>Mit C++11 kannst du sie so initialisieren:</p>
<pre><code class="language-cpp">std::map&lt;char, char&gt; mymap = { { 'a', 'b' }, { 'c', 'd' }, { 'e', 'f' } };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2162742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162742</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 01 Jan 2012 22:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Sun, 01 Jan 2012 23:40:05 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Gibt es da keinen besseren Weg?</p>
</blockquote>
<pre><code class="language-cpp">namespace {
struct init {
    init() {
        // Allen Initialisierungscode hier rein.
    }
} dummy;
}
</code></pre>
<p>Kurze Erklärung: Das &quot;namespace&quot; verhindert die Sichtbarkeit der Symbole &quot;init&quot; und &quot;dummy&quot; in anderen Übersetzungseinheiten. Der Konstruktor der struct wird aufgerufen, weil ja die Instanz &quot;dummy&quot; deklariert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162749</guid><dc:creator><![CDATA[asdasdasd]]></dc:creator><pubDate>Sun, 01 Jan 2012 23:40:05 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Mon, 02 Jan 2012 00:35:30 GMT]]></title><description><![CDATA[<p>@ dot: Und Alternativen zu globalen Variablen wären... ?<br />
Eine Klasse nur für diese Variable ist doch noch unschöner als eine Funktion.</p>
<p>@ 314159265358979: C++11 hab ich leider nicht.</p>
<p>@ asdasdasd: Wenn ich ein struct verwende, müsste ich dann nicht alle Funktionen von map, die ich verwenden will, dort neu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162754</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Mon, 02 Jan 2012 00:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Mon, 02 Jan 2012 00:38:32 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>@ asdasdasd: Wenn ich ein struct verwende, müsste ich dann nicht alle Funktionen von map, die ich verwenden will, dort neu schreiben?</p>
</blockquote>
<p>Nein, das Ganze bietet dir einfach nur einen Funktionskörper, den du für deinen Code nutzen kannst.</p>
<p>Ich sehe aber gerade, dass du deine Variable &quot;foo&quot; im Ausgangspost &quot;const&quot; gemacht hast. Dann funktioniert die von mir gezeigte Methode nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162755</guid><dc:creator><![CDATA[asdasdasd]]></dc:creator><pubDate>Mon, 02 Jan 2012 00:38:32 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Mon, 02 Jan 2012 00:48:41 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>@ dot: Und Alternativen zu globalen Variablen wären... ?<br />
Eine Klasse nur für diese Variable ist doch noch unschöner als eine Funktion.</p>
</blockquote>
<p>Wenn ein Objekt ein anderes Objekt benutzen will, ihm eine Referenz drauf zu geben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162757</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 02 Jan 2012 00:48:41 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Mon, 02 Jan 2012 01:09:23 GMT]]></title><description><![CDATA[<p>Gibt es einen speziellen Grund, warum du eine std::map&lt;char, char&gt; statt eines char[256] haben willst? Ein Interface ist da ja schnell herumgeschustert, und Lookup wäre damit trivial. Ich stelle mir das etwa so vor:</p>
<pre><code class="language-cpp">namespace {
  struct decode_info_t {
    decode_info_t() {
      (*this)
        ('a', '7')
        ('b', '2')
	// ...
	;
    }

    char operator[](char c) const { return data[static_cast&lt;unsigned char&gt;(c)]; }

  private:
    decode_info_t &amp;operator()(char c, char d) {
      data[static_cast&lt;unsigned char&gt;(c)] = d;
    }

    char data[256];
  } const decode_info;
}

// ...

assert(decode_info['a'] == '2');
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2162758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162758</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Mon, 02 Jan 2012 01:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Mon, 02 Jan 2012 02:12:31 GMT]]></title><description><![CDATA[<p>@ dot: Und dann soll ich dieses Objekt in main() erzeugen und an jede Unterfunktion und jedes Unterobjekt weitergeben?<br />
Nein danke.</p>
<p>@ seldon: Die Map ist nur ein Beispiel, das ich gerade brauche, für das Problem. Ich hatte auch schon kompliziertere Fälle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162762</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Mon, 02 Jan 2012 02:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Tue, 03 Jan 2012 16:41:31 GMT]]></title><description><![CDATA[<p>Da niemand mehr antwortet, gehe ich davon aus, dass es keine bessere Lösung gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2163354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163354</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Tue, 03 Jan 2012 16:41:31 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Tue, 03 Jan 2012 16:49:54 GMT]]></title><description><![CDATA[<p>Boost.Assign wäre eine mögliche Lösung.</p>
<p>bzw. etwas selbstgebasteltes nach dem Boost.Assign Gedanken.</p>
<p>Prinzipiell habe ich idR etwas derartiges:</p>
<pre><code class="language-cpp">map&lt;string, int&gt; m = initializer&lt;map&lt;string, int&gt; &gt;
  (&quot;hallo&quot;, 7)
  (&quot;welt&quot;, 3)
  (&quot;foo&quot;, 8)
  (&quot;bar&quot;, 12)
;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2163356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163356</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 03 Jan 2012 16:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Tue, 03 Jan 2012 20:17:25 GMT]]></title><description><![CDATA[<p>Hol' dir nen ordentlichen Compiler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2163423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163423</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 03 Jan 2012 20:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Initialisierung on Tue, 03 Jan 2012 23:20:11 GMT]]></title><description><![CDATA[<p>Boost.Assign sieht schon ganz gut aus. Ich werde es mir mal ansehen. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2163481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2163481</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Tue, 03 Jan 2012 23:20:11 GMT</pubDate></item></channel></rss>