<?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[Singleton]]></title><description><![CDATA[<p>Hallo, bin gerade am C++ lernen und dabei auf &quot;singleton&quot; gestoßen.<br />
Verstehe nicht genau was das ganze jetzt macht und wozu es gut ist.<br />
Hier mal der Code aus der .hpp Datei:</p>
<pre><code class="language-cpp">#ifndef TSINGLETON
#define TSINGLETON

template &lt;class T&gt;
class TSingleton
{
protected:
	//Membervariablen
	static T *m_pSingleton;	//Statisches Objekt

public:

	//Memberfunktionen

	//Destruktor
	//
	virtual ~TSingleton()
	{
	}

	//Get
	//
	//Aufgabe: Wenn nötig, statisches Objekt erzeugen und
	//Zeiger darauf zurückgeben
	//
	inline static T* Get()
	{
		//Existiert schon eine Instanz?
		if (!m_pSingleton)
			m_pSingleton = new T;	//Nein, dann neue Instanz erzeugen

		//Zeiger auf die Instanz zurückgeben
		return (m_pSingleton);

	}//Get

	//Statisches Objekt freigeben
	//
	static void Del()
	{
		//Gab es eine Instanz?
		if (m_pSingleton)
		{
			delete (m_pSingleton);	//Ja, dann freigeben
			m_pSingleton = NULL;	//und Zeiger auf NULL setzen
		}

	}//Del

};

//Die statische Variable erzeugen
//
template &lt;class T&gt;
T *TSingleton&lt;T&gt;::m_pSingleton = 0;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/270119/singleton</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 13:46:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270119.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Jul 2010 18:07:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 18:07:01 GMT]]></title><description><![CDATA[<p>Hallo, bin gerade am C++ lernen und dabei auf &quot;singleton&quot; gestoßen.<br />
Verstehe nicht genau was das ganze jetzt macht und wozu es gut ist.<br />
Hier mal der Code aus der .hpp Datei:</p>
<pre><code class="language-cpp">#ifndef TSINGLETON
#define TSINGLETON

template &lt;class T&gt;
class TSingleton
{
protected:
	//Membervariablen
	static T *m_pSingleton;	//Statisches Objekt

public:

	//Memberfunktionen

	//Destruktor
	//
	virtual ~TSingleton()
	{
	}

	//Get
	//
	//Aufgabe: Wenn nötig, statisches Objekt erzeugen und
	//Zeiger darauf zurückgeben
	//
	inline static T* Get()
	{
		//Existiert schon eine Instanz?
		if (!m_pSingleton)
			m_pSingleton = new T;	//Nein, dann neue Instanz erzeugen

		//Zeiger auf die Instanz zurückgeben
		return (m_pSingleton);

	}//Get

	//Statisches Objekt freigeben
	//
	static void Del()
	{
		//Gab es eine Instanz?
		if (m_pSingleton)
		{
			delete (m_pSingleton);	//Ja, dann freigeben
			m_pSingleton = NULL;	//und Zeiger auf NULL setzen
		}

	}//Del

};

//Die statische Variable erzeugen
//
template &lt;class T&gt;
T *TSingleton&lt;T&gt;::m_pSingleton = 0;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1922390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922390</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Tue, 06 Jul 2010 18:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 18:12:18 GMT]]></title><description><![CDATA[<p>Probier mal davon eine Instanz zu erstellen (oder mehrere). <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>Eine bessere Implementierung gibt es hier: (+Erklärung, falls du es nicht selbst drauf kommst, was speziell daran ist)<br />
<a href="http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B" rel="nofollow">http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922393</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 06 Jul 2010 18:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 18:40:40 GMT]]></title><description><![CDATA[<p>hmmm...also wenn ich genau eine Instanz erstelle, läuft alles<br />
glatt, sobald ich mehr Instanzen erstelle, bekomme ich Fehlermeldungen.</p>
<p>error C2039: 'Get' : is not a member of '`global namespace''<br />
error C2588: '::!Get' : illegal global finalizer</p>
<p>Also sorgt Singleton dafür, dass ich nur eine Instanz der Klasse<br />
erstellen kann aber ich verstehe nicht was genau mir das bringen soll.<br />
Was ist der Vorteil daran, erkenne das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922416</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Tue, 06 Jul 2010 18:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 18:47:14 GMT]]></title><description><![CDATA[<p>Lybrial schrieb:</p>
<blockquote>
<p>Also sorgt Singleton dafür, dass ich nur eine Instanz der Klasse<br />
erstellen kann aber ich verstehe nicht was genau mir das bringen soll.<br />
Was ist der Vorteil daran, erkenne das nicht.</p>
</blockquote>
<p>Der Vorteil daran ist, dass nur eine Instanz erstellt werden kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Dieses Verhalten kann manchmal von Vorteil sein, weil es logisch gesehen nicht angebracht ist, mehrere Objekte zu haben. Zum Beispiel für einen globalen Logger. Was aber nicht heisst, dass jede einzigartige Klasse gleich zum Singleton gemacht werden soll. Man zahlt dafür einen hohen Preis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922420</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 06 Jul 2010 18:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 18:55:47 GMT]]></title><description><![CDATA[<p>Also immer wenn ich UNBEDINGT nur eine einzige Instanz von<br />
einer Klasse erstellen möchte, wende ich so ein Singleton an?</p>
<p>Das Ding schützt mich also lediglich davor das ich &quot;ausversehen&quot;<br />
noch eine Instanz erstelle oder wie soll ich das verstehen?<br />
ich weiß doch eigentlich wie viele Instanzen ich erstelle und<br />
wie ich sie verwenden möchte^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922425</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Tue, 06 Jul 2010 18:55:47 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 19:03:51 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Man zahlt dafür einen hohen Preis.</p>
</blockquote>
<p>In wie fern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922426</guid><dc:creator><![CDATA[ÄhhhWTF?!]]></dc:creator><pubDate>Tue, 06 Jul 2010 19:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 19:11:38 GMT]]></title><description><![CDATA[<p>Ein Singleton ist eine verbesserte globale Variable. Das ist zwar nicht der Primärzweck, aber eben ein unumgänglicher Nebeneffekt, wenn man mit <code>static</code> -Methoden arbeitet.</p>
<p>Wenn man während des Programms höchstens eine Instanz haben darf und eine Compilezeit-Garantie dafür möchte, ist das Singleton <em>eine</em> Möglichkeit. Der Vorteil gegenüber einer herkömmlichen globalen Variable besteht in der Kapselung (man kann Zugriffe überwachen) und Flexibilität (man kann z.B. Initialisierung/Zerstörung explizit steuern). Nimm die Logger-Klasse. Wenn einem das globale Objekt <code>std::clog</code> nicht ausreicht, kann man beispielsweise ein Singleton drum herum packen und Zusatzfunktionalität einbauen.</p>
<p>Aber wie gesagt: Singletons musst du mit Bedacht einsetzen. Sie bringen einige Probleme mit sich, z.B. enorme Abhängigkeiten und die Tendenz, bei übermässigem Einsatz sauber strukturiertem Design (wo für die einzelnen Klassen genau festgelegt ist, wen sie kennen und mit wem sie interagieren dürfen) entgegenzuwirken. Auch sind globale/statische Objekte manchmal ein Problem wegen der Lebensdauer und Threadsicherheit. Singleton-Headerdateien, die zu oft eingebunden werden, können die Kompilierzeit erhöhen, und bei zentralen Änderungen Rekompilierungsvorgänge von Clientcode erzwingen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922429</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 06 Jul 2010 19:11:38 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Tue, 06 Jul 2010 19:26:49 GMT]]></title><description><![CDATA[<p>Okay Danke, ich denke ich habs begriffen <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 />
Hab gerade erst angefangen mit C++ und da war<br />
das grad nen harter Brocken^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1922439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1922439</guid><dc:creator><![CDATA[Lybrial]]></dc:creator><pubDate>Tue, 06 Jul 2010 19:26:49 GMT</pubDate></item></channel></rss>