<?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>Eine Stilfrage: Ein Objekt enthält alle Argumente des Befehls, mit dem das Programm gestartet wurde. Dieses Objekt wird an mehreren Stellen im Programm gebraucht. Man könnte das mit einem gloablen Pointer auf das Objekt lösen, aber das scheint mir unsauber.</p>
<p>Da es genau eine Instanz gibt, und die global verfügbar sein muß, wäre da nicht ein Singleton passend?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274753/singleton</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 07:14:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274753.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Oct 2010 09:42:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 09:42:59 GMT]]></title><description><![CDATA[<p>Eine Stilfrage: Ein Objekt enthält alle Argumente des Befehls, mit dem das Programm gestartet wurde. Dieses Objekt wird an mehreren Stellen im Programm gebraucht. Man könnte das mit einem gloablen Pointer auf das Objekt lösen, aber das scheint mir unsauber.</p>
<p>Da es genau eine Instanz gibt, und die global verfügbar sein muß, wäre da nicht ein Singleton passend?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960388</guid><dc:creator><![CDATA[sum]]></dc:creator><pubDate>Sat, 02 Oct 2010 09:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 09:58:53 GMT]]></title><description><![CDATA[<p>Überleg dir vielleicht ob es nicht besser ist, wenn du an diejenigen Objekte, die das Objekt brauchen einfach eine Referenz darauf übergibst. Damist hälst du es dir offen eine andere solche &quot;globale&quot; Instanz gewissen Objekten zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960392</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 02 Oct 2010 09:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 14:32:45 GMT]]></title><description><![CDATA[<p>Singleton heißt nur, dass du Techniken einsetzt, die das Kopieren der einzigen Instanz, sowie das Erzeugen einer zweiten Instanz, verhindern. Davon einmal abgesehen, dass Singleton ein sehr schwer zu realisierendes DP ist, hat das mit der Nutzbarkeit in unterschiedlichen Teilen nichts zu tun.</p>
<p>Du kannst entweder deine Instanz über einen globalen Pointer verwenden, oder die Instanz in main() bilden, und den Zeiger darauf als Parameter an alle betreffenden Funktionen übergeben. Ersteres ist einfacher, aber vielleicht &quot;unsauber&quot;, das Zweite ist mehr Aufwand. Ein klein wenig mehr Aufwand, aber dafür &quot;sauberer&quot; wäre als Drittes eine <code>const</code> -Referenz anstatt den Zeiger zu übergeben, falls die betreffenden Programmteile nur lesend auf das Objekt zugreifen sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960505</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Sat, 02 Oct 2010 14:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 14:40:15 GMT]]></title><description><![CDATA[<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Du kannst entweder deine Instanz über einen globalen Pointer verwenden, oder die Instanz in main() bilden, und den Zeiger darauf als Parameter an alle betreffenden Funktionen übergeben. Ersteres ist einfacher, aber vielleicht &quot;unsauber&quot;, das Zweite ist mehr Aufwand. Ein klein wenig mehr Aufwand, aber dafür &quot;sauberer&quot; wäre als Drittes eine <code>const</code> -Referenz anstatt den Zeiger zu übergeben, falls die betreffenden Programmteile nur lesend auf das Objekt zugreifen sollen.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960507</guid><dc:creator><![CDATA[ernst=??]]></dc:creator><pubDate>Sat, 02 Oct 2010 14:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 14:53:19 GMT]]></title><description><![CDATA[<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Ersteres [globaler Zeiger] ist einfacher, aber vielleicht &quot;unsauber&quot;, das Zweite [Parameterübergabe] ist mehr Aufwand.</p>
</blockquote>
<p>Falls du wissen willst, warum es tatsächlich und nicht nur vielleicht unsauber ist, kannst du ja mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1904093.html#1904093" rel="nofollow">das</a> lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960513</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 02 Oct 2010 14:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 15:23:59 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Überleg dir vielleicht ob es nicht besser ist, wenn du an diejenigen Objekte, die das Objekt brauchen einfach eine Referenz darauf übergibst. Damist hälst du es dir offen eine andere solche &quot;globale&quot; Instanz gewissen Objekten zu übergeben.</p>
</blockquote>
<p>So hätte ich es gemacht, aber das wäre umständlich, weil die Parameterklasse im main() gemacht wird, und das ist weit entfernt von den Orten, wo sie ebenfalls gebraucht wird. Da müßte man über mehrere Stufen gehen.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960524</guid><dc:creator><![CDATA[sum]]></dc:creator><pubDate>Sat, 02 Oct 2010 15:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 15:28:57 GMT]]></title><description><![CDATA[<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Singleton heißt nur, dass du Techniken einsetzt, die das Kopieren der einzigen Instanz, sowie das Erzeugen einer zweiten Instanz, verhindern. Davon einmal abgesehen, dass Singleton ein sehr schwer zu realisierendes DP ist, hat das mit der Nutzbarkeit in unterschiedlichen Teilen nichts zu tun.</p>
</blockquote>
<p>So wie ich das kenne, gibts vom Singleton im *.h-File eine getObject()-Funktion, so daß das Objekt global verfübar ist. Auch Wikipedia schreibt, daß das Objekt üblicherweise global verfügbar ist. Warum soll das Muster schwer zu realisieren sein?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960525</guid><dc:creator><![CDATA[sum]]></dc:creator><pubDate>Sat, 02 Oct 2010 15:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 15:29:25 GMT]]></title><description><![CDATA[<p>Ich dachte, du hättest nach einer sauberen Alternative gefragt? Also solltest du auch bereit sein, die Kosten zu tragen.</p>
<p>Das Singleton-Pattern ist zwar eine Möglichkeit, aber ein Singleton ist eben auch nur eine &quot;bessere&quot; globale Variable, die viele Probleme (welche: siehe meinen Link) weiterhin mit sich bringt, auch wenn sie alles unter einem objektorientierten Mantel verbirgt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960526</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 02 Oct 2010 15:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 15:32:28 GMT]]></title><description><![CDATA[<p>sum schrieb:</p>
<blockquote>
<p>Warum soll das Muster schwer zu realisieren sein?</p>
</blockquote>
<p>Das kommt darauf an, was es können soll. Schwierig wirds beispielsweise, wenn Abhängigkeiten zwischen mehreren Singletons bei der Initialisierung oder Zerstörung bestehen, da du über die Lebensdauer statischer/globaler Variablen nicht ohne Weiteres Kontrolle hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960527</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 02 Oct 2010 15:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sat, 02 Oct 2010 15:36:18 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>sum schrieb:</p>
<blockquote>
<p>Warum soll das Muster schwer zu realisieren sein?</p>
</blockquote>
<p>Das kommt darauf an, was es können soll. Schwierig wirds beispielsweise, wenn Abhängigkeiten zwischen mehreren Singletons bei der Initialisierung oder Zerstörung bestehen, da du über die Lebensdauer statischer/globaler Variablen nicht ohne Weiteres Kontrolle hast.</p>
</blockquote>
<p>Multithreading ist auch noch so ein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960528</guid><dc:creator><![CDATA[---]]></dc:creator><pubDate>Sat, 02 Oct 2010 15:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton on Sun, 03 Oct 2010 18:27:51 GMT]]></title><description><![CDATA[<p>sum schrieb:</p>
<blockquote>
<p>Yamakuzure schrieb:</p>
<blockquote>
<p>Singleton heißt nur, dass du Techniken einsetzt, die das Kopieren der einzigen Instanz, sowie das Erzeugen einer zweiten Instanz, verhindern. Davon einmal abgesehen, dass Singleton ein sehr schwer zu realisierendes DP ist, hat das mit der Nutzbarkeit in unterschiedlichen Teilen nichts zu tun.</p>
</blockquote>
<p>So wie ich das kenne, gibts vom Singleton im *.h-File eine getObject()-Funktion, so daß das Objekt global verfübar ist. Auch Wikipedia schreibt, daß das Objekt üblicherweise global verfügbar ist. Warum soll das Muster schwer zu realisieren sein?</p>
<p>lg</p>
</blockquote>
<p>Also ersteinmal ist &quot;Singleton&quot; ein Design Pattern. Die Darstellung in &quot;<em>Design Patterns. Elements of Reusable Object-Oriented Software</em>&quot;(*) ist allerdings nicht ganz ... naja ... zuende gedacht. Eine umfassende Diskussion liefert <a href="http://www.oop-trainer.de/Themen/Singleton.html" rel="nofollow">Ralf Schneeweiß</a></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: Ist mir schon klar. Das &quot;vielleicht&quot; war ein Stilmittel. Nicht mehr. Ich persönlich würde keine globalen Zeiger verwenden.</p>
<p>(*) Obwohl das Buch natürlich nach wie vor _das_ Standardwerk zu DP ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960906</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Sun, 03 Oct 2010 18:27:51 GMT</pubDate></item></channel></rss>