<?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[Mechanismus zum Umgehen eines Singletons !]]></title><description><![CDATA[<p>Hey Leute ich hab da mal wieder eine Frage ...<br />
Unsere Aufgabe war es eine Klasse so abzusichern dass man sie standard mäßig nur einmal instanzieren kann ..<br />
Ich hab dies über ein Singleton realisiert.<br />
1.)Konstruktor auf privat<br />
2.)getinstance Funktion geschrieben die eine Referenz auf ein<br />
Objekt einer Klasse zurück gibt ..</p>
<pre><code class="language-cpp">Einzelkind* Einzelkind::getinstance()
{
     cout &lt;&lt; &quot;\nG E T  I N S T A N C E &quot;;
	 if(!instance) instance = new Einzelkind;
	 return instance;
}
</code></pre>
<p>So nun sollen wir allerdinsg einen Mechanismus schaffen mit dem man das ganze umgehen kann , also trotz alle dem eine Instanz zu erzeugen .</p>
<p>Ich komm einfach nich drauf wie ich das machen kann...</p>
<p>Ich bräuchte erstmal nur einen kleinen tip , bzw ein Stichwort welches mich auf den richtigen Weg führt ..</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/263861/mechanismus-zum-umgehen-eines-singletons</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 11:20:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/263861.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Mar 2010 21:51:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 21:51:12 GMT]]></title><description><![CDATA[<p>Hey Leute ich hab da mal wieder eine Frage ...<br />
Unsere Aufgabe war es eine Klasse so abzusichern dass man sie standard mäßig nur einmal instanzieren kann ..<br />
Ich hab dies über ein Singleton realisiert.<br />
1.)Konstruktor auf privat<br />
2.)getinstance Funktion geschrieben die eine Referenz auf ein<br />
Objekt einer Klasse zurück gibt ..</p>
<pre><code class="language-cpp">Einzelkind* Einzelkind::getinstance()
{
     cout &lt;&lt; &quot;\nG E T  I N S T A N C E &quot;;
	 if(!instance) instance = new Einzelkind;
	 return instance;
}
</code></pre>
<p>So nun sollen wir allerdinsg einen Mechanismus schaffen mit dem man das ganze umgehen kann , also trotz alle dem eine Instanz zu erzeugen .</p>
<p>Ich komm einfach nich drauf wie ich das machen kann...</p>
<p>Ich bräuchte erstmal nur einen kleinen tip , bzw ein Stichwort welches mich auf den richtigen Weg führt ..</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874829</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sun, 28 Mar 2010 21:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 21:58:02 GMT]]></title><description><![CDATA[<p>Was soll der denn umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874833</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Sun, 28 Mar 2010 21:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:01:05 GMT]]></title><description><![CDATA[<p>Geht nur mit Mitteln, die nicht vom Standard abgedeckt sind, wie</p>
<pre><code class="language-cpp">#define private public
</code></pre>
<p>oder Adressenraten, reinterpret_cast, memcpy und dergleichen.</p>
<p>Ich würd's mit Adressenraten machen. Leg Dir eine globale Variable an. Du benutzt Einzelkind und Einzelkind benutzt cout. Vermutlich liegt Enzelkond::instance zwischen cout und Deiner globalen Variablen im Speicher. Lauf von Deiner globalen Variablen runter bis nach cout und such nach einem Zeiger, der gleich instance ist. Das löst höchst wahrscheinlich keine Schutzverletzung aus. Schreibe eine 0 rein und hol Dir ein zweites EInzelking mit getinstance.</p>
<p>Auf was will der Prof hinaus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874834</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:02:48 GMT]]></title><description><![CDATA[<p>Ja seine Frage lautet so :</p>
<pre><code class="language-cpp">2. Aufgabe (Abgabe!)
Bei einer Reihe von Anwendungen ist es wichtig sicherzustellen, dass von einer bestimmten Klasse
höchstens eine Instanz existiert. (Beispiele: Klassen, die zustandsgebundene Protokolle mit
peripheren Komponenten abwickeln, oder Klassen, die bestimmte Betriebssystem-Ressourcen
managen).
Entwickeln Sie eine Klasse Einzelkind, die a) instanziierbar ist und b) garantiert höchstens einmal
instanziiert wird. Verhindern Sie, dass mehrere Instanzen, z.B. mittels

Einzelkind e1;
Einzelkind e2;
Einzelkind e3 = e1;

angelegt werden und schaffen Sie einen Mechanismus, trotzdem eine Instanz zu erzeugen.
Hinweis: Geben Sie zur Prüfung im Destruktor irgendeinen String aus. Erscheint der String mehrfach,
haben Sie etwas übersehen.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1874836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874836</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:05:21 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<p>Ja seine Frage lautet so :</p>
<pre><code class="language-cpp">angelegt werden und schaffen Sie einen Mechanismus, trotzdem eine Instanz zu erzeugen.
</code></pre>
</blockquote>
<p>Das ist doch einfach das getinstance. Bist fertig. Du solltest nie den Singleton aushebeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874838</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:07:27 GMT]]></title><description><![CDATA[<p>Aber Du müßtest noch machen, daß sich das Einzelkind auch automatisch löscht.<br />
Am hübschesten als static-Variable in getinstance. Er wollte im <strong>De</strong>struktor die Ausgabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874839</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:13:55 GMT]]></title><description><![CDATA[<p>Ja aber heisst es nicht</p>
<p>: Verhindern sie das man mehrere Instanzen erzeugen kann<br />
und schaffen sie einen Mechanismus trotzdem eine anzulegen .<br />
:-S oder versteh ich die Frage iwie falsch ...</p>
<p>Im Destruktor will er ja nur einen String ausgegeben haben<br />
...mehr nich . Hab ich auch schon erledigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":-D"
      alt="😃"
    /> .</p>
<p>Bin mir jetz aber nicht sicher ob ich den Singleton noch aushebeln soll oder nicht ...ich schreib im am besten mal neh Mail .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874841</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:18:19 GMT]]></title><description><![CDATA[<p>Das verstehe ich als</p>
<blockquote>
<p>: Verhindern sie das man mehr als eine Instanze erzeugen kann<br />
und schaffen sie einen Mechanismus trotzdem eine einzige anzulegen .</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1874844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874844</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 22:22:04 GMT]]></title><description><![CDATA[<p>ich hab ihm jetzt erstmal geschrieben ...<br />
Mal sehen was er schreibt ...</p>
<p>Werd euch morgen informieren .</p>
<p>good n8t. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874845</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sun, 28 Mar 2010 22:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Sun, 28 Mar 2010 23:55:36 GMT]]></title><description><![CDATA[<blockquote>
<p>Entwickeln Sie eine Klasse Einzelkind, <strong>die a) instanziierbar ist</strong> und b) garantiert höchstens einmal<br />
instanziiert wird.</p>
</blockquote>
<p>Ich hätte das so verstanden, dass die Klassen einen - public - ctor haben muss. Obwohl ich die Anforderung etwas komisch finde. Allerdings finde ich die Formulierung der Aufgabenstellung so oder so schlecht, da mir nicht 100% klar wäre, was der nun haben will.</p>
<p>Ich hätte vermutlich sowas in der Art abgegeben:</p>
<pre><code class="language-cpp">class Foo
{
public:
    Foo()
    {
        if (sm_instanceCount != 0)
            throw std::logic_error(&quot;sicher nicht!&quot;);

        // ...

        sm_instanceCount = 1;
    }

    // ...

private:
    static int sm_instanceCount;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1874858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874858</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 28 Mar 2010 23:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 07:32:29 GMT]]></title><description><![CDATA[<p>Eine weitere Lösung wäre noch, mittels PIMPL das eigentliche Objekt in einen static-Member-Pointer auszulagern. Dieser zählt Referenzen mit.<br />
Aber im Prinzip ist das auch ein Singleton, nur etwas versteckt...<br />
Man kann halt dann sowas machen:</p>
<pre><code class="language-cpp">Einzelkind e1;
Einzelkind e2;
</code></pre>
<p>Und beide Einzelkinder sind dann identisch. Wobei mir der letzte Satz nicht gefällt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874891</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 29 Mar 2010 07:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 10:50:31 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Einzelkind e1;
Einzelkind e2;
</code></pre>
<p>Und beide Einzelkinder sind dann identisch.</p>
</blockquote>
<p>Warum sollte man sowas tuen wollen? Wenn ich ein Singleton habe und nur mit einem Objekt arbeiten muss/brauch, warum sollte ich dann mit mehreren Einzelkinder rumhantieren wollen, wenn es im Endeffekt doch das gleiche ist. Wäre das nicht unnötige Verwirrung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874973</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Mon, 29 Mar 2010 10:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 11:05:38 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>l'abra d'or schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Einzelkind e1;
Einzelkind e2;
</code></pre>
<p>Und beide Einzelkinder sind dann identisch.</p>
</blockquote>
<p>Warum sollte man sowas tuen wollen? Wenn ich ein Singleton habe und nur mit einem Objekt arbeiten muss/brauch, warum sollte ich dann mit mehreren Einzelkinder rumhantieren wollen, wenn es im Endeffekt doch das gleiche ist. Wäre das nicht unnötige Verwirrung?</p>
</blockquote>
<p>Wenn man sich die Aufgabenstellung entsprechend zurechtrückt kann man sich so etwas denken.<br />
Instanziierbar, nur eine Instanz, Mechanismus um trotzdem eine Instanz erzeugen zu können.<br />
Wie gesagt ist es ja auch ein Singleton, der sich aber in der Handhabung von dem gewohnten Zugriff per statischer Methode unterscheidet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1874981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1874981</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 29 Mar 2010 11:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 11:29:09 GMT]]></title><description><![CDATA[<p>Ist es mit einer Wrapper-Klasse nicht &quot;etwas&quot; einfacher? Von außen kein &quot;echtes&quot; Singleton und läßt sich behandeln wie getrennte Objekte, wobei es auf das gleiche zugreift...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875001</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 29 Mar 2010 11:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 13:07:02 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>l'abra d'or schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Einzelkind e1;
Einzelkind e2;
</code></pre>
<p>Und beide Einzelkinder sind dann identisch.</p>
</blockquote>
<p>Warum sollte man sowas tuen wollen? Wenn ich ein Singleton habe und nur mit einem Objekt arbeiten muss/brauch, warum sollte ich dann mit mehreren Einzelkinder rumhantieren wollen, wenn es im Endeffekt doch das gleiche ist. Wäre das nicht unnötige Verwirrung?</p>
</blockquote>
<p>Wenn man sich die Aufgabenstellung entsprechend zurechtrückt kann man sich so etwas denken.<br />
Instanziierbar, nur eine Instanz, Mechanismus um trotzdem eine Instanz erzeugen zu können.<br />
Wie gesagt ist es ja auch ein Singleton, der sich aber in der Handhabung von dem gewohnten Zugriff per statischer Methode unterscheidet.</p>
</blockquote>
<p>Ist dann kein Singleton mehr. Ist dann eine Klasse mit spezieller Handle-Semantik. Ein Smart-Pointer mit Singleton-Factory kombiniert sozusagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875100</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 29 Mar 2010 13:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Mon, 29 Mar 2010 13:11:46 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ist dann kein Singleton mehr. Ist dann eine Klasse mit spezieller Handle-Semantik. Ein Smart-Pointer mit Singleton-Factory kombiniert sozusagen.</p>
</blockquote>
<p>oder kurz gesagt: monostate</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875104</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 29 Mar 2010 13:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 09:25:48 GMT]]></title><description><![CDATA[<p>Du kannst eine andere Klasse als friend deklarieren. Die kann dann auf den privaten Konstruktor des Singletons zugreifen.</p>
<p>Um das mit vielen Verschiedenen Klassen zu machen, kannst Du den friend über ein Template bekannt geben:</p>
<pre><code class="language-cpp">template &lt;typename T, class spy = MakeFriends&lt;T&gt; &gt; class Fun
{
public:
    Fun&amp; getInstance()
    {
        if ( instance == 0)
        {
            instance = new Fun();
        }
        return instance;
    }

    Fun&amp; operator () ( void )
    {
        cout &lt;&lt; i &lt;&lt; &quot; &quot;;
        cout.flush();

        return *this;
    }

private:
    Fun( void ) : i(0)
    {
    }

private:
    T i;
    static Fun* instance; // muss noch extern definiert werden!

    friend typename spy; // to make privates accessible for the spy
};

template &lt;typename U&gt; class MakeFriends
{
public:
    MakeFriends(Fun&lt;U&gt;&amp; u) : m(&amp;(u.i)) 
    {
    }

    U* m;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1875869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875869</guid><dc:creator><![CDATA[gastgast]]></dc:creator><pubDate>Wed, 31 Mar 2010 09:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 10:01:27 GMT]]></title><description><![CDATA[<pre><code>garantiert höchstens einmal instanziiert wird. Verhindern Sie, dass mehrere Instanzen, z.B. mittels [..] trotzdem eine Instanz zu erzeugen.
</code></pre>
<p>Wo bitte steht denn, dass mehrere Instanzen erzeugt werden sollen? Wo steht, dass Singleton umgangen werden soll? Erzeugen sie <strong>eine</strong> Instanz!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875881</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 31 Mar 2010 10:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 13:17:17 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<pre><code>garantiert höchstens einmal instanziiert wird. Verhindern Sie, dass mehrere Instanzen, z.B. mittels [..] trotzdem eine Instanz zu erzeugen.
</code></pre>
<p>Wo bitte steht denn, dass mehrere Instanzen erzeugt werden sollen? Wo steht, dass Singleton umgangen werden soll? Erzeugen sie <strong>eine</strong> Instanz!</p>
</blockquote>
<p>so hab ich das auch verstanden.</p>
<p>allerdings:</p>
<pre><code class="language-cpp">Einzelkind e1;
Einzelkind e2;
Einzelkind e3 = e1;
</code></pre>
<p>das geht mit nem singleton kaum...<br />
es würde eben nur über pimpl + ref-counting machbar sein - dann wären die instanzen alle die selben. und dafür gibts nich so wirklich nen (sinnvollen) grund...</p>
<p>da dort auch nicht groß und breit was von pseudocode steht, würd ichs doch so blöd machen, dass es mit diesem code-stück geht.<br />
die nächste vorgabe war wiederrum, dass man im dtor eine ausgabe macht - und der nur ein einziges mal aufgerufen werden darf...<br />
ich habe das so verstanden, dass es der dtor von einzelkind sein soll und nicht der dtor der in einzelkind gekapselten klasse...</p>
<p>folglich würd ich dem prof auch ne mail schicken und ne url zu dem thread mitschicken...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875966</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 31 Mar 2010 13:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 13:19:49 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>das geht mit nem singleton kaum...<br />
es würde eben nur über pimpl + ref-counting machbar sein - dann wären die instanzen alle die selben. und dafür gibts nich so wirklich nen (sinnvollen) grund...</p>
</blockquote>
<p>monostate <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>gibt sehr wohl gruende warum man das so haben will... und refcounting ist nicht notwendig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875967</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 31 Mar 2010 13:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 13:34:58 GMT]]></title><description><![CDATA[<blockquote>
<p>monostate</p>
</blockquote>
<p>ok - der codeschnipsel würde dennoch nicht die angegebenen forderungen erfüllen.<br />
ich bleibe bei meiner aussage, dass die angaben mit c++ nicht zu implementieren sind, da das hier ja schon gegeben ist:</p>
<pre><code class="language-cpp">struct Einzelkind
{
 /*...*/

  static unsigned int dtor_count = 0;

  ~Einzelkind()
  {
    ++dtor_count;
  }
};

/*...*/

int main()
{
  Einzelkind e1;
  Einzelkind e2;
  Einzelkind e3 = e1;

  assert(Einzelkind::dtor_count == 1);
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1875977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1875977</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 31 Mar 2010 13:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 22:53:50 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Ist dann kein Singleton mehr. Ist dann eine Klasse mit spezieller Handle-Semantik. Ein Smart-Pointer mit Singleton-Factory kombiniert sozusagen.</p>
</blockquote>
<p>oder kurz gesagt: monostate</p>
</blockquote>
<p>monostate verstehe ich anders.</p>
<p>Hier:<br />
Objekt wird mit Erzeugen des 1. Handle initialisiert und mit Zerstören des letzten Handles de-initialisiert.</p>
<p>Monostate:<br />
Evtl. auch &quot;lazy&quot; Initialisierung mit Erzeugen des 1. Handle, aber keine sinnvolle De-Initialisierung möglich, da man damit rechnet dass Client Code andauernd extrem kurzlebige Objekte erzeugt (und eben gleich wieder zerstört).</p>
<p>Ist IMO ein u.U. sehr wichtiger Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876212</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 31 Mar 2010 22:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Wed, 31 Mar 2010 23:05:32 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Hier:<br />
Objekt wird mit Erzeugen des 1. Handle initialisiert und mit Zerstören des letzten Handles de-initialisiert.</p>
</blockquote>
<p>Davon steht hier nichts.<br />
Aber auch das ist mit monostate problemlos moeglich.</p>
<blockquote>
<p>Monostate:<br />
Evtl. auch &quot;lazy&quot; Initialisierung mit Erzeugen des 1. Handle, aber keine sinnvolle De-Initialisierung möglich, da man damit rechnet dass Client Code andauernd extrem kurzlebige Objekte erzeugt (und eben gleich wieder zerstört).</p>
</blockquote>
<p>das ist deine enge definition eines monostates. Aber monostate ist ein Design Pattern, dh es beschreibt nur abstakt eine Loesung fuer ein Problem. Wie du es genau implementierst haengt von der Situation ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876214</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 31 Mar 2010 23:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mechanismus zum Umgehen eines Singletons ! on Thu, 01 Apr 2010 01:39:44 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<blockquote>
<p>Monostate:<br />
Evtl. auch &quot;lazy&quot; Initialisierung mit Erzeugen des 1. Handle, aber keine sinnvolle De-Initialisierung möglich, da man damit rechnet dass Client Code andauernd extrem kurzlebige Objekte erzeugt (und eben gleich wieder zerstört).</p>
</blockquote>
<p>das ist deine enge definition eines monostates. Aber monostate ist ein Design Pattern, dh es beschreibt nur abstakt eine Loesung fuer ein Problem. Wie du es genau implementierst haengt von der Situation ab.</p>
</blockquote>
<p>Dann hatte ich da was falsch verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1876223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1876223</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 01 Apr 2010 01:39:44 GMT</pubDate></item></channel></rss>