<?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[Singletons]]></title><description><![CDATA[<p>Ich verstehe einfach nicht wofür singletons zuständig sind.<br />
Ich lese mittlerweile im Buch von heiko kalista(C++ für spieleprogrammierung) auf seite 245 von ca. 500 und kriege langsam meine schwierigkeiten bei den fortgeschrittenen themen.</p>
<p>Meine Frage ist:</p>
<p>1.Was ist die Aufgabe von Singletons.<br />
2.Wie wendet man sie sinvoll an.<br />
3.Und warum gibt es sie überhaupt?</p>
<p>Ich wäre euch wirklich dankbar wenn ihr mir weiterhelfen könntet,<br />
bin bis jetzt immer einigermaßen mit dem Lernen von C++ klar gekommen und hoffe<br />
das es jetzt nicht daran happert.</p>
<p>Vielen Dank <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/topic/252299/singletons</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 13:40:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252299.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Oct 2009 18:41:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singletons on Sat, 17 Oct 2009 18:41:44 GMT]]></title><description><![CDATA[<p>Ich verstehe einfach nicht wofür singletons zuständig sind.<br />
Ich lese mittlerweile im Buch von heiko kalista(C++ für spieleprogrammierung) auf seite 245 von ca. 500 und kriege langsam meine schwierigkeiten bei den fortgeschrittenen themen.</p>
<p>Meine Frage ist:</p>
<p>1.Was ist die Aufgabe von Singletons.<br />
2.Wie wendet man sie sinvoll an.<br />
3.Und warum gibt es sie überhaupt?</p>
<p>Ich wäre euch wirklich dankbar wenn ihr mir weiterhelfen könntet,<br />
bin bis jetzt immer einigermaßen mit dem Lernen von C++ klar gekommen und hoffe<br />
das es jetzt nicht daran happert.</p>
<p>Vielen Dank <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/1793943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793943</guid><dc:creator><![CDATA[jooker]]></dc:creator><pubDate>Sat, 17 Oct 2009 18:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sat, 17 Oct 2009 18:52:34 GMT]]></title><description><![CDATA[<p>jooker schrieb:</p>
<blockquote>
<p>1.Was ist die Aufgabe von Singletons.</p>
</blockquote>
<p>Im Prinzip globale Variablen. Nur allgemeiner, man kann Zusatztricks einbauen. Meistens daß sie erst enstehen, wenn man sie zum ersten mal benutzt. Oder daß sie wegen unklarer Zerstörungsreihenfolge nochmal wiederauferstehen können, obwohl sie eigentlich schon weg waren.</p>
<pre><code class="language-cpp">2.Wie wendet man sie sinvoll an.
</code></pre>
<p>Klassisches Beispiel ist wohl sowas wie ein Standarddrucker, der aber erst entstehen soll, wenn der Benutzer tatsächlich mal was drucken will, dann aber bis zum Programmende leben soll, falls er nochmal was drucken will.</p>
<pre><code class="language-cpp">3.Und warum gibt es sie überhaupt?
</code></pre>
<p>Sie können halt ein wenig mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793949</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 17 Oct 2009 18:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sat, 17 Oct 2009 18:54:12 GMT]]></title><description><![CDATA[<p>Singletons &quot;gibt&quot; es nicht, das ist einfach ein abstraktes Konzept und nicht etwa Teil der Sprache.<br />
Ein Singleton ist eine Klasse, von der man nur eine einzige Instanz im ganzen Programm benötigt (mit privatem Konstruktor und einer statischen Memberfunktion getInstance() geht man dann meist sicher, dass wirklich nur eine Instanz erzeugt werden kann). Dementsprechend kann die Aufgabe eines Singletons alles mögliche sein.</p>
<p>Beispiel: du hast eine Datenbank und eine Klasse, die das Interface zu dieser Datenbank darstellt - davon brauchst du nur eine Instanz =&gt; Singleton.<br />
Oder du hast eine Benutzerverwaltung und eine Klasse, die sämtliche Accounts verwaltet: auch ein Fall für ein Singleton.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793950</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Sat, 17 Oct 2009 18:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 06:16:19 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>jooker schrieb:</p>
<blockquote>
<p>1.Was ist die Aufgabe von Singletons.</p>
</blockquote>
<p>Im Prinzip globale Variablen. Nur allgemeiner, man kann Zusatztricks einbauen. Meistens daß sie erst enstehen, wenn man sie zum ersten mal benutzt. Oder daß sie wegen unklarer Zerstörungsreihenfolge nochmal wiederauferstehen können, obwohl sie eigentlich schon weg waren.</p>
<pre><code class="language-cpp">2.Wie wendet man sie sinvoll an.
</code></pre>
<p>Klassisches Beispiel ist wohl sowas wie ein Standarddrucker, der aber erst entstehen soll, wenn der Benutzer tatsächlich mal was drucken will, dann aber bis zum Programmende leben soll, falls er nochmal was drucken will.</p>
</blockquote>
<p>Den Sinn von Singleton hast du nicht kapiert. Die Lebensdauer ist es nicht. Das was Nanyuki schreint passt schon besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794070</guid><dc:creator><![CDATA[asdfghsdfgh]]></dc:creator><pubDate>Sun, 18 Oct 2009 06:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 06:53:32 GMT]]></title><description><![CDATA[<p>Du hast unter Umständen eventuell den wichtigsten Satz &quot;Im Prinzip globale Variablen.&quot; nicht lange genug behalten. Darin ist bereits enthalten, daß es sie nur einmal gibt. Zwischen der einen Datenbank-Connection und dem einen Standarddrucker sehe ich auch keinen Unterschied. Privaten Konstruktor und getInstance habe ich nicht gefordert, weil sie für Singletons nicht so nötig sind. Die Lebensdauer, insbesondere die Initialisierungsreihenfolge und lazy sein, ist es nicht immer, aber meistens, die einen dazu führt, Sachen wie die Benutzerverwaltung zum Singleton zu machen, statt zur schlichten globalen Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794074</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Oct 2009 06:53:32 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 06:54:22 GMT]]></title><description><![CDATA[<p>Das gibt dem ganzen auch nicht mehr Sinn. Dein Standarddrucker Beispiel zeigt doch, dass du es nicht verstanden hast. Warum soll der ein Singleton sein? Ganz sicher nicht dazu, dass er ewig im Speicher bleibt. Je nach dem was man vor hat könnte das Ding wo man den Standarddrucker bekommt ein Singleton sein. Wenn einer den Standarddrucker ändert, während er verwendet wird, was passiert dann? Programmcrash?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794076</guid><dc:creator><![CDATA[asdfghsdfgh]]></dc:creator><pubDate>Sun, 18 Oct 2009 06:54:22 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 06:57:38 GMT]]></title><description><![CDATA[<p>Hast zwar deine Antwort inzwischen erweitert, aber meine passt immer noch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794077</guid><dc:creator><![CDATA[asdfghsdfgh]]></dc:creator><pubDate>Sun, 18 Oct 2009 06:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 09:58:42 GMT]]></title><description><![CDATA[<p>Danke,<br />
so langsam verstehe ich das.</p>
<p>Aber Das thema singelton ist dann ja anscheinend wie Nanyuki schon mit der zeile:<br />
&quot;Singletons &quot;gibt&quot; es nicht, das ist einfach ein abstraktes Konzept und nicht etwa Teil der Sprache.&quot; sagte eher unwichtig und kann vernachlässigt werden oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794111</guid><dc:creator><![CDATA[jooker]]></dc:creator><pubDate>Sun, 18 Oct 2009 09:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 10:20:53 GMT]]></title><description><![CDATA[<p>Vernachlässigen würde ich es nicht, gibt gute Einsatzgebiete und man solte es zumindest kennen, schon allein deshalbw eil einem so eine Kosntruktion durchaus mal über den Weg laufen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794125</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 18 Oct 2009 10:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 11:15:18 GMT]]></title><description><![CDATA[<p>#ifndef TSINGLETON<br />
#define TSINGLETON</p>
<p>template &lt;class T&gt;<br />
class TSingleton<br />
{<br />
protected:</p>
<p>// Membervariablen<br />
static T *m_pSingleton; // Statisches Objekt</p>
<p>public:</p>
<p>// Memberfunktionen</p>
<p>// Destruktor<br />
//<br />
virtual ~TSingleton ()<br />
{<br />
}</p>
<p>// Get<br />
//<br />
// Aufgabe: Wenn nötig, statisches Objekt erzeugen und<br />
// Zeiger darauf zurückgeben<br />
//<br />
inline static T* Get ()<br />
{<br />
// Existiert schon eine Instanz?<br />
if (!m_pSingleton)<br />
m_pSingleton = new T; // Nein, dann neue Instanz erzeugen</p>
<p>// Zeiger auf die Instanz zurückgeben<br />
return (m_pSingleton);</p>
<p>} // Get</p>
<p>// Statisches Objekt freigeben<br />
//<br />
static void Del ()<br />
{<br />
// Gab es eine Instanz?<br />
if (m_pSingleton)<br />
{<br />
delete (m_pSingleton); // Ja, dann freigeben<br />
m_pSingleton = NULL; // und Zeiger auf NULL setzen<br />
}</p>
<p>} // Del</p>
<p>};</p>
<p>// Die statische Variable erzeugen<br />
//<br />
template &lt;class T&gt;<br />
T* TSingleton&lt;T&gt;::m_pSingleton = 0;</p>
<p>#endif</p>
<p>Das ist ein kleines Beispiel aus dem Buch.</p>
<p>Warum schrieb der Autor in den ersten zeilen:<br />
#ifndef TSINGLETON<br />
#define TSINGLETON</p>
<p>und zum schluss:<br />
#endif</p>
<p>Vielleicht könnte jemand sich nochmal auf das beispiel beziehn,<br />
wäre euch sehr verbunden,mit beispielen lernt man es besser <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1794148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794148</guid><dc:creator><![CDATA[jooker]]></dc:creator><pubDate>Sun, 18 Oct 2009 11:15:18 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 11:31:10 GMT]]></title><description><![CDATA[<p>jooker schrieb:</p>
<blockquote>
<p>Das ist ein kleines Beispiel aus dem Buch.</p>
<p>Warum schrieb der Autor in den ersten zeilen:<br />
#ifndef TSINGLETON<br />
#define TSINGLETON</p>
<p>und zum schluss:<br />
#endif</p>
</blockquote>
<p>Die Dinger nennen sich <a href="http://en.wikipedia.org/wiki/Include_guard" rel="nofollow">Include Guards</a></p>
<p>Die Implementierung is allerdings etwas seltsam. Der Konstruktor (&amp; Copy c'tor) sind öffentlich. Der Destruktor könnte auch protected gemacht werden, dann kann man sich &quot;virtuellen&quot; Overhead sparen.<br />
Get sollte lieber eine Referenz zurückgeben und könnte z.B. auch als Mayers-Singleton implementiert werden (das spart dir diese if-Abfrage). Bei <em>Del</em> ist die if-Anweisung unnötig. Uswusf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794155</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 18 Oct 2009 11:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 11:55:31 GMT]]></title><description><![CDATA[<p>Also ich nutze imer diese Variante, die finde ich Persönlich besser.</p>
<pre><code class="language-cpp">class Singleton
{
private:
    CTor;
    Copy-CTor;
    Operator=;
private:
    DTor;
    static Singleton&amp; getInstance()
    {
        static Singleton single;
        return single;
    };
};
</code></pre>
<p>Wobei das dann auch kein Template ist sondern in der Klasse direkt integriert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794169</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 18 Oct 2009 11:55:31 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 15:05:48 GMT]]></title><description><![CDATA[<p>Also haben die Singeltons im Grunde nur ein vorteil:<br />
Sie schaffen Ordnung und übersichtlichkeit da man seperat eine Singleton klasse in einer hpp datei speichern kann von wo aus sich einfach eine Instanz erzeugen lässt welche an die cpp Datei übergeben werden kann.</p>
<p>ich hoffe ich hab es jetzt abschließend richtig erklärt,<br />
wenn ich was vergessen hab zu erwähnen,sagt es mir bitte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794247</guid><dc:creator><![CDATA[jooker]]></dc:creator><pubDate>Sun, 18 Oct 2009 15:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 15:30:13 GMT]]></title><description><![CDATA[<p>Das is schonmal Nah dran aber immernoch daneben. Durch die Singletons braucht man garkeine globale Variable mehr, man erstellt sie als Normale Klasse, zB ein TexturManager, und jeder der was daran machen will kann sich über getInstance eine Referenz auf die Instanz holen, somit braucht man keine globale Variable mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794261</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 18 Oct 2009 15:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 15:32:14 GMT]]></title><description><![CDATA[<p>jooker schrieb:</p>
<blockquote>
<p>Also haben die Singeltons im Grunde nur ein vorteil:</p>
</blockquote>
<p>Du meinst ein<strong>en</strong>.</p>
<blockquote>
<p>ich hoffe ich hab es jetzt abschließend richtig erklärt</p>
</blockquote>
<p>Nein. Von Singletons kann es nur eine einzige Instanz geben, wie es der Name auch schon nahelegt. Das ist sein Zweck.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794264</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sun, 18 Oct 2009 15:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 15:34:42 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Durch die Singletons braucht man garkeine globale Variable mehr</p>
</blockquote>
<p>&quot;Global&quot; im formalen Sinne von C++ vielleicht nicht.</p>
<p>Wenn man unter &quot;global&quot; jedoch das Konzept versteht, Zugriff von überall her direkt zu ermöglichen, gehören Singletons sehr wohl dazu (wie auch schon erwähnt wurde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794265</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 18 Oct 2009 15:34:42 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 15:44:28 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>[...] somit braucht man keine globale Variable mehr.</p>
</blockquote>
<p>Was ist mit globalen Referenzen? Sowas lässt sich nicht mit einem Singleton realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794271</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 18 Oct 2009 15:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 18:25:40 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn man unter &quot;global&quot; jedoch das Konzept versteht, Zugriff von überall her direkt zu ermöglichen, gehören Singletons sehr wohl dazu (wie auch schon erwähnt wurde).</p>
</blockquote>
<p>OK, das is dann wieder sone Auslegungssache wie mans versteht.</p>
<p>David_pb schrieb:</p>
<blockquote>
<p>Was ist mit globalen Referenzen? Sowas lässt sich nicht mit einem Singleton realisieren.</p>
</blockquote>
<p>Ich evrstehe nicht ganz worauf du hinaus willst? Ich bezog mich darauf das ich mit der Singleton keine globale Variable mehr brauche da der Zugriff von überall ja möglich ist. Das man Singletons nicht für jede Kleinigkeit einsetzt setze ich jetzt einfach mal voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794295</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 18 Oct 2009 18:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 16:19:59 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Was ist mit globalen Referenzen? Sowas lässt sich nicht mit einem Singleton realisieren.</p>
</blockquote>
<p>Was meinst du mit globaler Referenz?</p>
<p>So etwa ?</p>
<pre><code class="language-cpp">SingletonType&amp; a = SingletonType::getInstance();
</code></pre>
<p>Is zwar nicht möglich,<br />
aber getInstance sollte ja eine Referenz zurückgegeben ( und keinen Zeiger),<br />
daher hat sich das in meinen Augen schon eliminiert.</p>
<p>Oder hab ich dich falsch verstanden ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794297</guid><dc:creator><![CDATA[branleb]]></dc:creator><pubDate>Sun, 18 Oct 2009 16:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 16:21:24 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Also ich nutze imer diese Variante, die finde ich Persönlich besser.</p>
<pre><code class="language-cpp">class Singleton
{
private:
    CTor;
    Copy-CTor;
    Operator=;
private:
    DTor;
    static Singleton&amp; getInstance()
    {
        static Singleton single;
        return single;
    };
};
</code></pre>
<p>Wobei das dann auch kein Template ist sondern in der Klasse direkt integriert.</p>
</blockquote>
<p>find ich zwar eigtl auch toll, aber dummerweise kann man die zerstörungs-reihenfolge eben nicht festlegen : &lt;</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794300</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 18 Oct 2009 16:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 16:23:30 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Ich evrstehe nicht ganz worauf du hinaus willst? Ich bezog mich darauf das ich mit der Singleton keine globale Variable mehr brauche da der Zugriff von überall ja möglich ist. Das man Singletons nicht für jede Kleinigkeit einsetzt setze ich jetzt einfach mal v******.</p>
</blockquote>
<p>Angenommen du benötigst eine globale Zugriffsstelle für <em>irgendwas</em>, wobei du aber die Implementierung von <em>irgendwas</em> austauschbar machen willst. Dann würde sich z.B. eine globale Referenz (also im Endeffekt auch eine Art globale Variable) anbieten. Wie würdest du das mit einem Singleton realisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794302</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 18 Oct 2009 16:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 16:26:31 GMT]]></title><description><![CDATA[<p>Die globale Referenz hat aber nur den Vorteil, daß Du<br />
cout.foo();<br />
schreiben kannt.</p>
<p>Wenn ich bereit bin,<br />
cout().foo();<br />
zu schreiben, brauche ich keine globalen Referenzen mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794305</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Oct 2009 16:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 16:49:30 GMT]]></title><description><![CDATA[<p>Oder wenn man es mit dem Gewissen vereinbaren kann: Makros. Bei Singletons finde ich die legitim, denn jedes Mal <code>MySingleton.GetInstance().DoSomething();</code> zu schreiben ist mühsam und bringt nicht wirklich was. Wenns nur ab und zu vorkommt, kann mans schon so machen.</p>
<p>Bei globalen Referenzen muss man je nach Ziel auch aufpassen, dass es bereits existiert, wenn die Referenz erstellt wird. Oder dass die Referenz bereits initialisiert ist, wenn man auf sie zugreift.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794320</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 18 Oct 2009 16:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 17:01:45 GMT]]></title><description><![CDATA[<p>Es geht mir nicht um eine Kurzschreibweise. Folgendes Beispiel:</p>
<pre><code class="language-cpp">class Base
{
public:
	virtual void foo() = 0;
};

class Derived1 : public Base
{
public:
	virtual void foo()
	{
	}
};

class Derived2 : public Base
{
public:
	virtual void foo()
	{
	}
};

extern Base&amp; g_something;

// irgendwo modulglobal, oder sonstwas
Derived2 bla;
Base&amp; g_something = bla;

// oder
Derived1 bla;
Base&amp; g_something = bla;
</code></pre>
<p>Nexus schrieb:</p>
<blockquote>
<p>Bei globalen Referenzen muss man je nach Ziel auch aufpassen, dass es bereits existiert, wenn die Referenz erstellt wird. Oder dass die Referenz bereits initialisiert ist, wenn man auf sie zugreift.</p>
</blockquote>
<p>Die Referenz muss doch initialisiert sein, ansonsten streikt der Compiler bereits.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794328</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 18 Oct 2009 17:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 18:53:41 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Die Referenz muss doch initialisiert sein, ansonsten streikt der Compiler bereits.</p>
</blockquote>
<p>Nicht, wenn eine Deklaration der Referenz vorliegt.</p>
<pre><code class="language-cpp">// Header
extern MyClass&amp; Reference;

// Implementierungsdatei
MyClass&amp; Reference = ...;
</code></pre>
<p>Da die Initialisierungsreihenfolge globaler Variablen in unterschiedlichen Übersetzungseinheiten nicht festgelegt ist, kann es sein, dass ein Zugriff auf <code>Reference</code> erfolgt, bevor die Referenz initialisiert wurde.</p>
<p>Aber solche Fälle scheinen mir generell eher realitätsfern. Oder setzt du häufig globale Referenzen ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794391</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 18 Oct 2009 18:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to Singletons on Sun, 18 Oct 2009 19:21:53 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Aber solche Fälle scheinen mir generell eher realitätsfern. Oder setzt du häufig globale Referenzen ein?</p>
</blockquote>
<p>Mag sein, das solche Fälle selten sind. Aber den Fall gibt es trotzdem und Singletons sind eben kein kompletter Ersatz für globale Variablen, selbst wenn es einige Parallelen gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1794410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1794410</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 18 Oct 2009 19:21:53 GMT</pubDate></item></channel></rss>