<?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[Alternative für globale Variablen]]></title><description><![CDATA[<p>Ich habe momentan einige globale Variablen in einen namespace gepackt und sie in über extern für alle verfügbar gemacht (so wie hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-151279.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-151279.html</a>). Nun möchte ich diese Variablen aber gerne in meine Hauptklasse packen, wovon die anderen Klassen erben. <strong>Wie mache ich das am Besten?</strong> Dazu muss gesagt sein, dass ich die Settings aus einer Textdatei auslese, ich sie aber trotzdem gerne vorher zuweisen würde. Beim suchen bin ich übrigends auf die Singleton Klasse gestoßen. Wenn es nicht einfacher geht, dann würde eine extra Singleton Klasse für die Settings erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246286/alternative-für-globale-variablen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 02:40:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246286.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Jul 2009 17:18:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alternative für globale Variablen on Sat, 25 Jul 2009 17:18:14 GMT]]></title><description><![CDATA[<p>Ich habe momentan einige globale Variablen in einen namespace gepackt und sie in über extern für alle verfügbar gemacht (so wie hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-151279.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-151279.html</a>). Nun möchte ich diese Variablen aber gerne in meine Hauptklasse packen, wovon die anderen Klassen erben. <strong>Wie mache ich das am Besten?</strong> Dazu muss gesagt sein, dass ich die Settings aus einer Textdatei auslese, ich sie aber trotzdem gerne vorher zuweisen würde. Beim suchen bin ich übrigends auf die Singleton Klasse gestoßen. Wenn es nicht einfacher geht, dann würde eine extra Singleton Klasse für die Settings erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749530</guid><dc:creator><![CDATA[Streifen]]></dc:creator><pubDate>Sat, 25 Jul 2009 17:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sat, 25 Jul 2009 17:23:51 GMT]]></title><description><![CDATA[<p>Singleton für Settings, die von extern eingelesen werden, kann durchaus eine sinnvolle Alternative sein <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1749533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749533</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 25 Jul 2009 17:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sat, 25 Jul 2009 19:01:12 GMT]]></title><description><![CDATA[<p>Ja, nur müsste ich dann wieder eine neue Klasse erstellen. Ich habe das nun folgendermaßen probiert, was mir jedoch eine Fehlermeldung gibt:</p>
<pre><code class="language-cpp">class MainClass
{
public:
	MainClass();
	~MainClass();
	void LoadSettings();
protected:
	static bool bsetting;
	static int  isettingvalue;
	//...
};

MainClass::MainClass()
{
}

MainClass::~MainClass()
{
}

void MainClass::LoadSettings()
{
	//Settings laden 
	//&lt;-- Code hier --&gt;

	bsetting = true;
}

int main()
{
	MainClass mClass;
	mClass.LoadSettings();
	return 0;
}
</code></pre>
<pre><code>TestProject.obj : error LNK2001: unresolved external symbol &quot;protected: static bool MainClass::bsetting&quot; (?bsetting@MainClass@@1_NA)
1&gt;TestProject.exe : fatal error LNK1120: 1 unresolved externals
</code></pre>
<p>Wie kann ich den Variablen denn nun einen Wert zuweisen? Natürlich könnte ich sich public machen und das dann außerhalb der Funktion machen, aber dann kann ich auch die globalen Variablen behalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749579</guid><dc:creator><![CDATA[Streifen]]></dc:creator><pubDate>Sat, 25 Jul 2009 19:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sat, 25 Jul 2009 19:04:45 GMT]]></title><description><![CDATA[<p>guck dir mal singletons an - so geht das mit sicherheit nicht...</p>
<p>tip:</p>
<p><code>static_variablen_typ meineklasse::static_variable;</code><br />
außerhalb der klasse</p>
<p>und leeren Ctor und Dtor brauchste auch nich selbst implementieren, das macht der compiler schon für dich <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=";D"
      alt="😉"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749581</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 25 Jul 2009 19:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sat, 25 Jul 2009 20:16:41 GMT]]></title><description><![CDATA[<p>Ich habe ein wenig gegoogelt und die Lösung gefunden: <a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.11" rel="nofollow">http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.11</a>. Nun funktioniert es, wenn ich <code>bool MainClass::bsetting = true;</code> außerhalb der Klasse/Funktion schreibe. Auch innerhalb einer Funtkion lässt es sich nun anwenden. Eigentlich habe ich nun erreicht, was ich wollte. Sollte ich dennoch zu einer Singleton Klasse greifen, bzw. hat dieser Weg irgendwelche <strong>erheblichen</strong> Nachteile?</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;TestProject.h&quot;

class MainClass
{
public:
	MainClass();
	~MainClass();
	void LoadSettings();
protected:
	static bool bsetting;
	static int  isettingvalue;
	//...
};

MainClass::MainClass()
{
}

MainClass::~MainClass()
{
}

bool MainClass::bsetting = true;

void MainClass::LoadSettings()
{
	bsetting = false;
}

int main()
{
	MainClass mClass;
	mClass.LoadSettings();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1749597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749597</guid><dc:creator><![CDATA[Streifen]]></dc:creator><pubDate>Sat, 25 Jul 2009 20:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sun, 26 Jul 2009 11:04:00 GMT]]></title><description><![CDATA[<p>Naja. Du kannst unsinnigerweise das hier machen:</p>
<pre><code class="language-cpp">int main()
{
    MainClass mClass;
    mClass.LoadSettings();

    MainClass mClass2;
    mClass2.LoadSettings();    

return 0;
}
</code></pre>
<p>Macht nicht viel Sinn, da nur eine Instanz der Klasse <code>MainClass</code> Sinn macht, oder? - Dann ist das schon ein Fall für ein Singleton. Oder mach wenigstens auch die Funktionen der Klasse statisch und den Konstruktor privat. Dann hast du einen ähnlichen Effekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749736</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 26 Jul 2009 11:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sun, 26 Jul 2009 14:45:19 GMT]]></title><description><![CDATA[<p>Erstmal vielen Dank für die Hilfe. Ich habe nun folgendes versucht, bekomme aber noch zwei Fehlermeldungen.</p>
<pre><code class="language-cpp">class Settings
{
private:
	//Ein Pointer zum Speichern der Instanz
	static Settings* instance;
    //Konstruktor private, damit man sich keine Instanzen holen kann.
	Settings(std::string FileName)
	{
		m_FileName = FileName;
	}
	std::string m_FileName;
    //Den Kopierkonstruktor schützen um zu vermeiden, dass das Objekt unbeabsichtigt kopiert wird.
	Settings(const Settings&amp; cc){}
	~Settings(){}
public:
	static Settings* getInstance(std::string FileName);
    static void Destroy();
	void LoadSettings();

	bool bsetting;
	int isettingvalue;
};
Settings* Settings::instance = NULL;

Settings* Settings::getInstance(std::string FileName)
{
	if( !instance )
      instance = new Settings(FileName);
    return instance;
}

void Settings::Destroy()
{
	// static
    if (instance){
      delete instance;
      instance = NULL;
    }
}

void Settings::LoadSettings()
{
	//Code zum Laden der Settings
	// -------------------------
	bsetting = true;
	isettingvalue = 5;
}

class MainClass : public Settings
{
public:
    MainClass();
    ~MainClass();
	void TestMainClass();
    //...
};

void MainClass::TestMainClass()
{
	std::cout &lt;&lt; &quot;settingvalue from maincalss = &quot; &lt;&lt; isettingvalue;
	std::cin.get();
}

int main()
{
	Settings *settings = Settings::getInstance(&quot;mysettings.ini&quot;);
	settings-&gt;LoadSettings();

	//Ausgabe: 5 (ohne MainClass getestet)
	std::cout &lt;&lt; &quot;settingvalue = &quot; &lt;&lt; settings-&gt;isettingvalue;
	std::cin.get();

	MainClass mClass;
	mClass.TestMainClass();

    // Destroy instances
    Settings::Destroy();

	return 0;
}
</code></pre>
<pre><code>1&gt;TestProject.obj : error LNK2019: unresolved external symbol &quot;public: __thiscall MainClass::~MainClass(void)&quot; (??1MainClass@@QAE@XZ) referenced in function _main
1&gt;TestProject.obj : error LNK2019: unresolved external symbol &quot;public: __thiscall MainClass::MainClass(void)&quot; (??0MainClass@@QAE@XZ) referenced in function _main
1&gt;C:\Users\Wraithin\Documents\Visual Studio 2008\Projects\TestProject\Debug\TestProject.exe : fatal error LNK1120: 2 unresolved externals
</code></pre>
<p>Wahrscheinlich geht das so wieder nicht, wie ich es mir gedacht habe... Ich habe noch nie etwas mit Singleton Klassen gemacht und deshalb wäre es nett, wenn mir mal kurz jemand helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749840</guid><dc:creator><![CDATA[Streifen]]></dc:creator><pubDate>Sun, 26 Jul 2009 14:45:19 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Sun, 26 Jul 2009 16:46:25 GMT]]></title><description><![CDATA[<p>Du kannst von einer Klasse nichts ableiten, wenn kein Konstruktor als public verfügbar ist.. Wenn du das so mit dieser Vererbung machen willst, dann würde ich eher (wiedermal) das Meyers Singleton empfehlen:<br />
<a href="http://www.devarticles.com/c/a/Cplusplus/C-plus-plus-In-Theory-The-Singleton-Pattern-Part-I/4/" rel="nofollow">http://www.devarticles.com/c/a/Cplusplus/C-plus-plus-In-Theory-The-Singleton-Pattern-Part-I/4/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1749893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1749893</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 26 Jul 2009 16:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 01:40:56 GMT]]></title><description><![CDATA[<p>Ich habe mich nun doch dazu entschieden, eine separate Singleton-Klasse namens Settings zu erstellen, was auch soweit ganz gut funktioniert. Da ich die Variablen vorher gerne initialisieren möchte, habe ich mich dazu entschlossen, das direkt im Konstruktor zu machen. Das sollte eigentlich kein Problem darstellen, da ja nur maximal ein Objekt der Klasse erstellt werden kann. Ich weiß, dass mein Code (noch) nicht thread safe ist, aber im Allgemeinen sollte es doch mit der Initialisierung der Variablen im Konstruktor keine Probleme geben, oder?</p>
<p>Hier nochmal der Code:</p>
<pre><code class="language-cpp">class Settings
{
private:
	//Ein Pointer zum Speichern der Instanz
	static Settings* instance;
    //Konstruktor private, damit man sich keine Instanzen holen kann.
	Settings()
	{
		isettingvalue = 12;
	}
    //Den Kopierkonstruktor schützen um zu vermeiden, dass das Objekt unbeabsichtigt kopiert wird.
	Settings(const Settings&amp; cc){}
	~Settings(){}
public:
	static Settings* getInstance();
    static void Destroy();
	void LoadSettings(std::string FileName);

	bool bsetting;
	int isettingvalue;
};
Settings* Settings::instance = NULL;

Settings* Settings::getInstance()
{
	if( !instance )
      instance = new Settings();
    return instance;
}

void Settings::Destroy()
{
    if (instance)
	{
      delete instance;
      instance = NULL;
    }
}

void Settings::LoadSettings(std::string FileName)
{
	//Code zum Laden der Settings
	// -------------------------
	bsetting = true;
	isettingvalue = 5;
}

int main()
{
	Settings *settings = Settings::getInstance();
	std::cout &lt;&lt; &quot;settingvalue before LoadSettings = &quot; &lt;&lt; settings-&gt;isettingvalue &lt;&lt; std::endl; // Output 12
	settings-&gt;LoadSettings(&quot;testfile.ini&quot;);

	std::cout &lt;&lt; &quot;settingvalue = &quot; &lt;&lt; settings-&gt;isettingvalue &lt;&lt; std::endl; // Output 5
	settings-&gt;isettingvalue = 2;
	std::cout &lt;&lt; &quot;settingvalue = &quot; &lt;&lt; settings-&gt;isettingvalue; //Output: 2
	std::cin.get();

    Settings::Destroy();

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1750625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750625</guid><dc:creator><![CDATA[Streifen]]></dc:creator><pubDate>Tue, 28 Jul 2009 01:40:56 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 05:51:07 GMT]]></title><description><![CDATA[<p>Und was spricht gegen das Meyers Singleton? - Imo braucht man für ein Singleton das rumhantieren mit dem dynamischen Speicher lediglich, wenn man ein etwas spezielleres Singleton machen will, wie z.B ein Phönix Singleton. Aber ansonsten reicht das von Meyers vorgeschlagene.</p>
<p>Ich finde einfach das hier unnötig und &quot;gefährlich&quot;.</p>
<blockquote>
<pre><code class="language-cpp">Settings::Destroy();
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1750637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750637</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Jul 2009 05:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 08:39:45 GMT]]></title><description><![CDATA[<p>Was ist wenn man das Löschen, so wie hier beschrieben:<a href="http://www.oop-trainer.de/Themen/Singleton.html" rel="nofollow">http://www.oop-trainer.de/Themen/Singleton.html</a>, mit einer guard-Klasse macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750725</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 28 Jul 2009 08:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 09:03:29 GMT]]></title><description><![CDATA[<p>Klar kann man. Ich habe das &quot;gefährlich&quot; mit Absicht in Anführungszeichen geschrieben, weil es viele mögliche Implementierungen von Singletons gibt. Oftmals reicht aber Meyers völlig. Und ich bevorzuge eine einfache Lösung, wenn sie passt einer komplizierteren.</p>
<p>Ich sehe den wirklichen Unterschied dieses Guards nicht wirklich zu Meyers. Läuft ja auf das gleiche hinaus. Wenn allerdings der Guard noch zusätzliche Funkitionalität, wie z.B eine manuelle Zerstörung anbietet, dann ist das etwas völlig anderes. Aber, wie gesagt braucht man das ja eher selten und das Meyers Singleton reicht völlig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750738</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Jul 2009 09:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 12:16:08 GMT]]></title><description><![CDATA[<p>Oft ist es ideal wenn man Singletons garnicht zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750857</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 28 Jul 2009 12:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 12:56:00 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Oft ist es ideal wenn man Singletons garnicht zerstört.</p>
</blockquote>
<p>Noch öfters ist es ideal, wenn man Singletons garnicht benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750880</guid><dc:creator><![CDATA[AntiPatternInc]]></dc:creator><pubDate>Tue, 28 Jul 2009 12:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 12:57:46 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Oft ist es ideal wenn man Singletons garnicht zerstört.</p>
</blockquote>
<p>Wenn nur eines vorhanden ist, dann ist es imo weniger tragisch. Dann zerstört es sich einfach als letztes. Sobald man aber Krieg der Singletons bestreiten will, dann wirds problematisch, wer sich selbst zerstört und wer auf den Leichen rumtrampelt.. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1750882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750882</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Jul 2009 12:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 12:58:49 GMT]]></title><description><![CDATA[<p>AntiPatternInc schrieb:</p>
<blockquote>
<p>Noch öfters ist es ideal, wenn man Singletons garnicht benutzt.</p>
</blockquote>
<p>Vor allem nicht als Alternative zu globalen Variablen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1750884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750884</guid><dc:creator><![CDATA[AntiPatternCorp]]></dc:creator><pubDate>Tue, 28 Jul 2009 12:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 13:07:25 GMT]]></title><description><![CDATA[<p>SinglePattern dürfte man Abstand das überbenutzteste Pattern überhaupt sein und es ist nahezu nie angebracht.<br />
Ich finde mittlerweile sogar globale Variablen besser als Singletons.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750893</guid><dc:creator><![CDATA[auchmalanmerker.]]></dc:creator><pubDate>Tue, 28 Jul 2009 13:07:25 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 13:27:33 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Was ist wenn man das Löschen, so wie hier beschrieben:<a href="http://www.oop-trainer.de/Themen/Singleton.html" rel="nofollow">http://www.oop-trainer.de/Themen/Singleton.html</a>, mit einer guard-Klasse macht?</p>
</blockquote>
<p>Dann hat man den Fall nicht zuende gedacht.<br />
Warum hat der Wächter nur das Löschen und nicht auch noch das Erzeugen?<br />
In Listing5 fällt die Asymmetrie stark auf.<br />
Hauen wir das Erzeugen doch mal auch in den Wächter-Konstruktor und beobachten, was geschieht.<br />
Es erinnert an was bekanntes. Moment, gleich kommts.<br />
Den instanz-Zeiger und exemplar() auch in den Wächter rein!<br />
Ja, wir habens raus. Es ist ein Meyers-Singleton, der ein gepimpltes Monster-Objekt hält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750906</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 28 Jul 2009 13:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 13:43:53 GMT]]></title><description><![CDATA[<p>Wie gesagt. Den Grund so etwas in diese Richtung zu machen, wäre für mich so etwas:</p>
<pre><code class="language-cpp">class Singleton
{
   public:
     static Singleton* exemplar();

   private:
     static Singleton *instanz;
     Singleton() {}
     Singleton( const Singleton&amp; );

     ~Singleton() {}

     class Waechter {
         public: ~Waechter() {
           if( Singleton::instanz != 0 )
             delete Singleton::instanz;
         }

         void destroy()
         {
           if ( !Singleton::instanz )
           {
             delete Singleton::instanz;
             Singleton::instanz = 0;
           }   
         }
     };
     friend class Waechter;
};
</code></pre>
<p>Somit könnte man das Singleton selbst zerstören, wenn das irgendwie notwenig ist, und wenn man es verigsst wird es automatisch gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750921</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Jul 2009 13:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 13:46:08 GMT]]></title><description><![CDATA[<p>auchmalanmerker. schrieb:</p>
<blockquote>
<p>Ich finde mittlerweile sogar globale Variablen besser als Singletons.</p>
</blockquote>
<p>Und ich find Vanilleeis ganz Klasse.<br />
Mal ehrlich: hier sollte es weniger darum gehen was man an persönlichen Präferenzen für und gegen ein bestimmtes Pattern hat, sondern vielmehr darum, welche Vor- und Nachteile das Pattern in der gegebenen Situation gegenüber den Alternativen hat. Deswegen sollte zu jedem &quot;ich finde&quot; auch ein &quot;weil&quot; geliefert werden. Und zwar nicht &quot;weil Vanilleeis einfach lecker ist&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750923</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jul 2009 13:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 14:03:18 GMT]]></title><description><![CDATA[<p>Irgendwie versteh ich die Problematik nicht, die es beim Erzeugen/Zerstören geben soll.</p>
<p>Wenn ich das wie im Meyer Singleton mache (also eine Referenz auf eine statische lokale Variable liefere), wo ist dann das Problem?<br />
Erzeugung: Nur wenn man die statische Funktion aufruft, wird das Objekt erzeugt. Passt.<br />
Zerstörung: Ok da bin ich etwas überfragt. Finde eine statische lokale Variable eh irgendwie magisch. Wann wird diese Variable denn wieder zerstört? Und was genau ist jetzt dieses Zerstör-Problem? Kann da vielleicht jemand bitte ein kleines Beispiel bringen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750936</guid><dc:creator><![CDATA[marti]]></dc:creator><pubDate>Tue, 28 Jul 2009 14:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 14:55:33 GMT]]></title><description><![CDATA[<p>Statische Variablen werden nach dem Ende der main zerstört.</p>
<p>Das Problem ist die Reihenfolge, in der zerstört wird, wenn du 2 statische Variablen hast. Was passiert z.B, wenn die einte zerstört wird und die andere bei seiner eigenen Zerstörung auf die bereits zerstört zugreift?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750977</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Jul 2009 14:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 15:16:06 GMT]]></title><description><![CDATA[<p>Seh da noch immer nicht das Problem. Dann greif ich einfach in den Destruktoren der Singletons auf kein anderes Singleton zu. Dann is doch alles sicher? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1750993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750993</guid><dc:creator><![CDATA[marti]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:16:06 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 15:22:37 GMT]]></title><description><![CDATA[<p>marti schrieb:</p>
<blockquote>
<p>Seh da noch immer nicht das Problem. Dann greif ich einfach in den Destruktoren der Singletons auf kein anderes Singleton zu. Dann is doch alles sicher? <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>Sofern das möglich ist, was aber nicht immer geht. Ich würde das Problem als sehr selten bezeichnen, aber es kommt tatsächlich manchmal vor.<br />
Deshalb hatte drakon auch gesagt, dass in den meisten Fällen das Meyers Singleton absolut ausreicht.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751004</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:22:37 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 15:27:22 GMT]]></title><description><![CDATA[<p>marti schrieb:</p>
<blockquote>
<p>Seh da noch immer nicht das Problem. Dann greif ich einfach in den Destruktoren der Singletons auf kein anderes Singleton zu. Dann is doch alles sicher? <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>Jup. Nur kann man sich da manchmal nicht sicher sein, zum Beispiel hast Du irgendwann Sorgen mit dem Drucker und machst zur Sicherheit mal rein, daß die Druckerdestruktion geloggt wird. Hast aber vergessen, daß nicht nur der Drucker ein Singleton ist, sondern das LOG-Makro innendrin auch einen Singleton verwendet. Schade.<br />
Aber will man ALLES bedenken im Umgang mit Singletons, hat man irgendwie einen gewissen Spaßverlust.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751008</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative für globale Variablen on Tue, 28 Jul 2009 15:27:35 GMT]]></title><description><![CDATA[<p>Ok, verstehe. Gibt es sonst noch Fallstricke bei Singletons? Vielleicht Probleme bei Multithreading?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751010</guid><dc:creator><![CDATA[marti]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:27:35 GMT</pubDate></item></channel></rss>