<?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 variable erst später initialisieren]]></title><description><![CDATA[<p>hallo, ich habe folgendes problem.<br />
ich erstell ein Objekt einer Klasse global. das ist ja weiter nicht schlimm. nur theoretisch darf diese erst erstellt werden wenn bestimmte initialisierungen abgeschlossen sind. hier mal pseudocode:</p>
<p>Klasse theApp;</p>
<p>int main()<br />
{<br />
init();<br />
}</p>
<p>das problem an sich ist das ich noch zig andere funktionen habe die auf dieses Objekt zugreifen und ich es nicht jedes mal übergeben will.<br />
Also kann man eine globale variable auch innerhalb einer fremden funktion definieren ala:</p>
<p>int main()<br />
{<br />
init();<br />
create();<br />
}</p>
<p>void create()<br />
{<br />
Klasse theApp //aber global <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 />
}</p>
<p>vielen dank für eure hilfe.<br />
ps. hätte auch kein problem auf ne extra datei auszuweichen, aber da der compiler ja sowieso die Instanz gleich erstellt isses nicht wirklich n ausweg.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249176/globale-variable-erst-später-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:14:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249176.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Sep 2009 15:09:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to globale variable erst später initialisieren on Thu, 03 Sep 2009 15:09:56 GMT]]></title><description><![CDATA[<p>hallo, ich habe folgendes problem.<br />
ich erstell ein Objekt einer Klasse global. das ist ja weiter nicht schlimm. nur theoretisch darf diese erst erstellt werden wenn bestimmte initialisierungen abgeschlossen sind. hier mal pseudocode:</p>
<p>Klasse theApp;</p>
<p>int main()<br />
{<br />
init();<br />
}</p>
<p>das problem an sich ist das ich noch zig andere funktionen habe die auf dieses Objekt zugreifen und ich es nicht jedes mal übergeben will.<br />
Also kann man eine globale variable auch innerhalb einer fremden funktion definieren ala:</p>
<p>int main()<br />
{<br />
init();<br />
create();<br />
}</p>
<p>void create()<br />
{<br />
Klasse theApp //aber global <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 />
}</p>
<p>vielen dank für eure hilfe.<br />
ps. hätte auch kein problem auf ne extra datei auszuweichen, aber da der compiler ja sowieso die Instanz gleich erstellt isses nicht wirklich n ausweg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771660</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 03 Sep 2009 15:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to globale variable erst später initialisieren on Thu, 03 Sep 2009 15:10:59 GMT]]></title><description><![CDATA[<p>Suche mal nach dem Begriff &quot;Singleton&quot;.</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771663</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Thu, 03 Sep 2009 15:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to globale variable erst später initialisieren on Thu, 03 Sep 2009 15:26:40 GMT]]></title><description><![CDATA[<p>greenghecco schrieb:</p>
<blockquote>
<p>ich erstell ein Objekt einer Klasse global. das ist ja weiter nicht schlimm.</p>
</blockquote>
<p>Doch! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>greenghecco schrieb:</p>
<blockquote>
<p>das problem an sich ist das ich noch zig andere funktionen habe die auf dieses Objekt zugreifen und ich es nicht jedes mal übergeben will.</p>
</blockquote>
<p>Schreibfaulheit ist ein häufiger Grund für globale Variablen. <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>Meist kann man solche Dinge besser designen. Wenn du zum Beispiel in einer Klasse ein Referenz auf ein Objekt speicherst, kannst du in deren Memberfunktionen ebenfalls auf dieses zugreifen, ohne es ständig zu übergeben. Indem du dir genau überlegst, wie mehrere Klassen voneinander abhängen, werden globale Variablen in vielen Fällen überflüssig. Nichts ist einfach so da und muss überall bekannt sein.</p>
<p>Sollte nur ein Hinweis für das nächste Mal sein, fast immer lohnt sich eine kurze Designphase, da ein gut strukturiertes Programm auch später einiges erleichtert. Gerade globale Variablen sind relativ mühsam, was das Debuggen angeht, da Fehler nur schwer eingegrenzt werden können.</p>
<p>Ausserdem lösen Singletons die Probleme von globalen Variablen nur bedingt. Sie werden aber gerne als objektorientierter Ersatz angesehen (zu Unrecht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771681</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 03 Sep 2009 15:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to globale variable erst später initialisieren on Thu, 03 Sep 2009 16:02:56 GMT]]></title><description><![CDATA[<p>Mit einem Singleton kann man zumindest die Erzeugung bis zum ersten Zugriff hinauszögern und Probleme der Initialiserungsreihenfolge umgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771710</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 03 Sep 2009 16:02:56 GMT</pubDate></item></channel></rss>