<?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 Verstaendnisproblem]]></title><description><![CDATA[<p>Hallo erst mal. Ich versuche eine Logging-Klasse zu implementieren und wollte dabei ein Singleton zu benutzen. Die Beschreibung in HumeSikkins Beitrag ist ja ok aber wie ist es mit Member-Variablen und anderen Methoden. Mussen/sollen sie auch static sein oder ist es unnoetig?</p>
<pre><code class="language-cpp">class Log
		{
		private:
			Log(void){}
			Log(const Log&amp; rhs);
			Log operator=(const Log&amp;);
			enum LEVEL
			{
				ERROR       = 0xFF0000,
				WARNING     = 0x0000FF,
				OK          = 0x00FF00,
				INFORMATION = 0xFFFFFF
			}level;
			template&lt;typename T&gt;
			::std::string NumToString(const T&amp; Num)
			{
				::std::string Res;
				::std::ostringstream tmp;

				tmp &lt;&lt; Num;
				Res = Num.str();

				return Res;
			}
		public:
			//level Err()const;
			//void  Err(level ChangeCurrent);
			static ::std::ofstream notify; // static oder nicht?
			static Log&amp; HtmlLog();
			void Write(const ::std::string&amp; message, ::std::ofstream&amp; file); // static oder nicht?
		};
</code></pre>
<p>Wahre ueber Hilfen sei es Anregungen, Tips oder Kritik sehr Dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224737/singleton-verstaendnisproblem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 04:20:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224737.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Oct 2008 13:36:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 13:36:06 GMT]]></title><description><![CDATA[<p>Hallo erst mal. Ich versuche eine Logging-Klasse zu implementieren und wollte dabei ein Singleton zu benutzen. Die Beschreibung in HumeSikkins Beitrag ist ja ok aber wie ist es mit Member-Variablen und anderen Methoden. Mussen/sollen sie auch static sein oder ist es unnoetig?</p>
<pre><code class="language-cpp">class Log
		{
		private:
			Log(void){}
			Log(const Log&amp; rhs);
			Log operator=(const Log&amp;);
			enum LEVEL
			{
				ERROR       = 0xFF0000,
				WARNING     = 0x0000FF,
				OK          = 0x00FF00,
				INFORMATION = 0xFFFFFF
			}level;
			template&lt;typename T&gt;
			::std::string NumToString(const T&amp; Num)
			{
				::std::string Res;
				::std::ostringstream tmp;

				tmp &lt;&lt; Num;
				Res = Num.str();

				return Res;
			}
		public:
			//level Err()const;
			//void  Err(level ChangeCurrent);
			static ::std::ofstream notify; // static oder nicht?
			static Log&amp; HtmlLog();
			void Write(const ::std::string&amp; message, ::std::ofstream&amp; file); // static oder nicht?
		};
</code></pre>
<p>Wahre ueber Hilfen sei es Anregungen, Tips oder Kritik sehr Dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1598822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598822</guid><dc:creator><![CDATA[spongebob1]]></dc:creator><pubDate>Tue, 14 Oct 2008 13:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 14:06:45 GMT]]></title><description><![CDATA[<p>Normalerweise implementiert man eine Singleton-Klasse wie eine ganz normale Klasse und so, dass es auch mehrere davon geben könnte, die unabhängig voneinander arbeiten könnten (mal davon abgesehen, dass es unsinnig wäre - oder das Design falsch ist ^^) - und dann baut man sich ein Singleton-Grundgerüst als Template und lässt die richtige Klasse davon erben...</p>
<p>also stark vereinfacht:</p>
<pre><code class="language-cpp">/*singleton.h*/
template &lt;class T&gt;
class Singleton
{
  static T;
public:
  T* GetInstancePtr() {return T;};
}
</code></pre>
<pre><code class="language-cpp">/*beispiel.h*/

#include &quot;singleton.h&quot;

class Log : public Singleton &lt;Log&gt;
{
/*die implementation ganz normal*/
}
</code></pre>
<p>übrigens:</p>
<pre><code class="language-cpp">Log(void){}
//void in der Parameterliste mitzuschreiben ist in C++ sehr unüblich, also:
Log(){}
</code></pre>
<pre><code class="language-cpp">Log operator=(const Log&amp;);
/*warum noch mal kopieren? außerdem sollte man in den headern IMMER die varialben-Bezeichnung mitschreiben...
weil man im header immer schön schnell nachgucken kann, um die Funktion grob zu verstehen...
und arbeit macht es ja nun auch keine...*/
Log&amp; operator=(const Log&amp; rhs);
</code></pre>
<pre><code class="language-cpp">enum LEVEL
            {
                ERROR       = 0xFF0000,
                WARNING     = 0x0000FF,
                OK          = 0x00FF00,
                INFORMATION = 0xFFFFFF
            }level;
</code></pre>
<p>also ich finds hässlich ^^ ich hoffe mal, dass das hier geht:</p>
<pre><code class="language-cpp">enum Tlevel
{
  error = 1,
  warning = 2,
  ok = 4,
 //das man noch platz für andere hätte 
  information = error | warning | ok
}

Tlevel level;
</code></pre>
<p>falls du wert darauf legst, dass level unbedingt kein int ist, dann kannst du auch so was schreiben:<br />
<code>enum Tlevel : unsigned char</code><br />
falls es aber auf jeden fall ein int sein soll, dann kann man das auch so machen: (oder halt auch mit dieser Art Vererbung, die aber so weit ich weiß, noch nicht von allen Compilern unterstützt wird...<br />
<code>enum{/*...*/, force_int = 0xffffffff}</code></p>
<pre><code class="language-cpp">template&lt;typename T&gt;
            ::std::string NumToString(const T&amp; Num)
            {
                ::std::string Res;
                ::std::ostringstream tmp;

                tmp &lt;&lt; Num;
                Res = Num.str(); //is übrigens falsch ^^ tmp.str() wäre richtig

                return Res;
            }
</code></pre>
<p>das hier hat nichts in ner Log-Klasse zu suchen... entweder, du legst nen Namespace Convert oder machst sie zumindest static in der log-klasse - obwohl es unsauber wäre...<br />
ich würds außerdem so schreiben:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
            ::std::string ToString(const T&amp; in)
            {
                ::std::ostringstream tmp;
                tmp &lt;&lt; in;
                return tmp.str();
            }
</code></pre>
<pre><code class="language-cpp">//level Err()const;
            //void  Err(level ChangeCurrent);
</code></pre>
<p>Wie wärs statt dessen mit GetErrorLevel und SetErrorLevel?</p>
<pre><code class="language-cpp">static ::std::ofstream notify; // static oder nicht?
</code></pre>
<p>nicht static...</p>
<pre><code class="language-cpp">static Log&amp; HtmlLog();
</code></pre>
<p>lass das weg, dafür haben wir das singleton ^^</p>
<pre><code class="language-cpp">void Write(const ::std::string&amp; message, ::std::ofstream&amp; file); // static oder nicht?
</code></pre>
<p>nicht static... warum willste den ofstream noch mal mit übergeben? ist es nicht der namens &quot;notify&quot;?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1598836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598836</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 14 Oct 2008 14:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 16:56:22 GMT]]></title><description><![CDATA[<p>Ich will hier nicht den ewigen Glaubenskrieg wieder anzetteln, aber meiner Erfahrung nach ist es immer wieder sinnvoll ein paar Gedanken zu investieren ob es nicht sinnvoll ist anstatt eines Singleton z.B. einfach (teils anonyme) Namensraeume zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1598926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598926</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Tue, 14 Oct 2008 16:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 17:59:04 GMT]]></title><description><![CDATA[<p>Ähh warum schreibts du eigentlich die ganze Zeit beispielsweise:</p>
<pre><code class="language-cpp">::std::string NumToString(const T&amp; Num)
            {
                ::std::string Res;
                ::std::ostringstream tmp;
</code></pre>
<p>Nicht nur das es furchtbar häßlich ist, es ist auch einfach unnötig. So ist es richtig:</p>
<pre><code class="language-cpp">std::string NumToString(const T&amp; Num)
            {
                std::string Res;
                std::ostringstream tmp;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1598949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598949</guid><dc:creator><![CDATA[Kurz nebenbei]]></dc:creator><pubDate>Tue, 14 Oct 2008 17:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 18:32:01 GMT]]></title><description><![CDATA[<p>Kurz nebenbei schrieb:</p>
<blockquote>
<p>Nicht nur das es furchtbar häßlich ist, es ist auch einfach unnötig. So ist es richtig:</p>
</blockquote>
<p>Ob das unnötig ist, kann man nur über den Kontext entscheiden, denn folgendes ist ein legales C++ Programm.</p>
<pre><code class="language-cpp">#include &lt;string&gt;

namespace myspace {
    namespace std {
        class string {}; // irgend eine eigene String Klasse
    }
}

int main () {
    namespace myspace {
        std::string name;
        ::std::string name2;
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1598963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598963</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Tue, 14 Oct 2008 18:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Tue, 14 Oct 2008 19:31:17 GMT]]></title><description><![CDATA[<p>~john schrieb:</p>
<blockquote>
<p>Ob das unnötig ist, kann man nur über den Kontext entscheiden, denn folgendes ist ein legales C++ Programm.</p>
</blockquote>
<p>Seit wann darf man eigene Namespaces mit Namen <code>std</code> einführen? Ich dachte, das wäre nur für Template-Spezialisierungen erlaubt. Oder bezieht sich das nur auf globale Namensräume?</p>
<p>Abgesehen davon, wer würde so etwas tun? Kaum jemand, zumindest nicht mit gutem Grund. Und genau deshalb würde ich die <code>::</code> am Anfang auch weglassen. Oder schreibst du das vor jeden Namensraum-Bezeichner?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1598999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1598999</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 14 Oct 2008 19:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 08:31:45 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>~john schrieb:</p>
<blockquote>
<p>Ob das unnötig ist, kann man nur über den Kontext entscheiden, denn folgendes ist ein legales C++ Programm.</p>
</blockquote>
<p>Seit wann darf man eigene Namespaces mit Namen <code>std</code> einführen? Ich dachte, das wäre nur für Template-Spezialisierungen erlaubt. Oder bezieht sich das nur auf globale Namensräume?</p>
<p>Abgesehen davon, wer würde so etwas tun? Kaum jemand, zumindest nicht mit gutem Grund. Und genau deshalb würde ich die <code>::</code> am Anfang auch weglassen. Oder schreibst du das vor jeden Namensraum-Bezeichner?</p>
</blockquote>
<p>Nein, aber streng genommen müsste man es...<br />
du kannst deine namespaces nennen, wie du willst... (darfst nur im &quot;äußeren&quot; std nichts ändern), aber was ~john geschrieben hat, ist durchaus in ordnung...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599178</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 15 Oct 2008 08:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 08:42:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Seit wann darf man eigene Namespaces mit Namen std einführen? Ich dachte, das wäre nur für Template-Spezialisierungen erlaubt. Oder bezieht sich das nur auf globale Namensräume?</p>
</blockquote>
<p>Sobald du was eignes in den namespace std einführst, gilt es nicht mehr als Standardkonformes Programm. Respektive die Standardbibliothek muss nicht mehr unbedingt konform arbeiten. Man überlege sich nur mal, dass man eine Klasse schreibt, die &quot;zufälligerweise&quot; den gleichen Namen hat, wie etwas, was in der std. lib benutzt wird und das überdeckt. Kann böse folgen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599186</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 15 Oct 2008 08:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 08:56:32 GMT]]></title><description><![CDATA[<p><code>myspace::std</code> != <code>::std</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599193</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 15 Oct 2008 08:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 09:32:58 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p><code>myspace::std</code> != <code>::std</code></p>
</blockquote>
<p>Ja, das ist klar. Habe nie das Gegenteil behauptet.</p>
<p>btw:<br />
Als ich die Bezeichnung myspace gesehen habe, musste ich durchaus schmunzeln. <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/1599207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599207</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 15 Oct 2008 09:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 10:42:11 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Seit wann darf man eigene Namespaces mit Namen <code>std</code> einführen?</p>
</blockquote>
<p>Man darf &quot;::std&quot; nicht verändern, ich führe aber eine eigene String Klasse in &quot;::myspace::std&quot; ein, und das ist nun einmal nicht &quot;::std&quot;. Die führenden &quot;::&quot; geben eine absolute Namensraumbezug an. D.h. &quot;::std::string&quot; ist garantiert die Stringklasse aus der ISO Norm, wohingegen &quot;std::string&quot; das nicht sein muß. Hier hängt es vom sogenannten Koenig-Lookup ab, welche Klasse genommen wird.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Abgesehen davon, wer würde so etwas tun? Kaum jemand, zumindest nicht mit gutem Grund. Und genau deshalb würde ich die <code>::</code> am Anfang auch weglassen.</p>
</blockquote>
<p>In der Regel kann man das gefahrlos tun, aber es gibt Zusammenhänge, in denen dies notwendig ist. Zum Beispiel wenn man den new operator überlädt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599250</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Wed, 15 Oct 2008 10:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 12:55:18 GMT]]></title><description><![CDATA[<p>Okay, dann ist das Erstellen eigener Namensräume <code>std</code> also nur auf globaler Ebene nicht gestattet. Trotzdem kann ich mir nicht vorstellen, dass jemand aus Spass einen eigenen Namespace <code>std</code> (wenn auch innerhalb eines anderen, z.B. <code>myspace</code> ) erstellt, zumal ja auch die Möglichkeit von <code>using namespace myspace;</code> in Betracht gezogen werden muss.</p>
<p>Halt wieder so ein Fall, wo man das :: eigentlich ruhig weglassen kann, und einem nur etwas passiert, wenn man absichtlich schlecht programmierte Konstrukte und böse Namensräume benutzt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599354</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 12:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 13:02:12 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>...Trotzdem kann ich mir nicht vorstellen, dass jemand aus Spass einen eigenen Namespace <code>std</code> ... erstellt, zumal ja auch die Möglichkeit von <code>using namespace myspace;</code> in Betracht gezogen werden muss...</p>
</blockquote>
<p>Du hast wohl noch nie mit Entwicklern gearbeitet die Abkürzen wo nur möglich. Dann ist std garkein so unwahrscheinliches Konstrukt (und zudem werden diese Entwickler auch using namespace in Mengen verwenden und dann über die &quot;fehlerhaften&quot; C++ Bibliotheken schimpfen, und das es ohne Namensräume und mit kriptischen Bezeichnern ja viel besser war).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599361</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 15 Oct 2008 13:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 13:08:16 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Du hast wohl noch nie mit Entwicklern gearbeitet die Abkürzen wo nur möglich.</p>
</blockquote>
<p>Nein, nicht wirklich. Ich kenne zwar die Tendenz, möglichst kurze (aber nicht bereits vergebene) Bezeichner zu wählen.</p>
<p>Aber wie kann man auf die Idee kommen, einen eigenen Namenraum <code>std</code> zu erstellen? Von mir aus irgendwelche kryptischen, nichts aussagenden Bezeichner, aber <code>std</code> ?</p>
<p>asc schrieb:</p>
<blockquote>
<p>[...] und dann über die &quot;fehlerhaften&quot; C++ Bibliotheken schimpfen, und das es ohne Namensräume und mit kriptischen Bezeichnern ja viel besser war).</p>
</blockquote>
<p>Vielleicht wäre C etwas für die. <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/1599372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599372</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 13:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 14:47:41 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Aber wie kann man auf die Idee kommen, einen eigenen Namenraum <code>std</code> zu erstellen? Von mir aus irgendwelche kryptischen, nichts aussagenden Bezeichner, aber <code>std</code> ?</p>
</blockquote>
<p>Die Abkürzung std kenne ich außerhalb von C++ stellvertretend für Standard. Nun schiebt einer vielleicht die Allgemeinen Programmteile in einen Namensraum, und dort halte ich die Abkürzung std nun wirklich nicht für Außergewöhnlich (Neben Core, Base...).</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>[...] und dann über die &quot;fehlerhaften&quot; C++ Bibliotheken schimpfen, und das es ohne Namensräume und mit kriptischen Bezeichnern ja viel besser war).</p>
</blockquote>
<p>Vielleicht wäre C etwas für die. <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>
</blockquote>
<p>Ooooohhhhh jaaa. ;P</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599455</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 15 Oct 2008 14:47:41 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 18:06:06 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Die Abkürzung std kenne ich außerhalb von C++ stellvertretend für Standard. Nun schiebt einer vielleicht die Allgemeinen Programmteile in einen Namensraum, und dort halte ich die Abkürzung std nun wirklich nicht für Außergewöhnlich (Neben Core, Base...).</p>
</blockquote>
<p>Naja, wenn das wirklich so ist... Jeder C++-Programmierer sollte eigentlich die Standardbibliothek kennen und somit wissen, dass <code>std</code> reserviert ist und dessen eigene Einführung früher oder später zu Namenskonflikten führt. Denken viele Programmierer so kurzfristig? Ich kann nicht wirklich nachvollziehen, dass man trotz allem einen eigenen Namensraum einführt, der sich mit bereits existierenden (und dann noch allgegenwärtigen) Namespaces überschneidet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599565</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Verstaendnisproblem on Wed, 15 Oct 2008 19:17:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a><br />
Die Log-Klasse sollte eine html-Logdatei erstellen. Deswegen benutze ich bei den enum-Werten die Hexadezimale schreibweise. Bei dem</p>
<pre><code class="language-cpp">operator=
</code></pre>
<p>habe ich nur die Deklaration in der Header-File ohne die Definition in der .cpp Datei <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>Bei dem NumToString Template habe ich es so wegen der named return value optimization geschrieben. Bei der statischen Methode HtmlLog() hatte ich mich nach dem Meyer-Singleton orientiert. Nur habe statt</p>
<pre><code class="language-cpp">static Singleton&amp; GetInstanz()
        {
            // Die Instanz wird erst beim ersten Aufruf erzeugt.
            // Endet das Programm, wird Instanz vernichtet.
            static Singleton Instanz;
            return Instanz;
        }
</code></pre>
<pre><code class="language-cpp">static Log&amp; HtmlLog()
{
     static Log Instance;
     return Instance;
}
</code></pre>
<p>geschrieben.</p>
<p>@sqrt(-1)<br />
Da ich noch am Lernen bin(bitte nicht hauen) kann man mit anonymen Namensraeumen Singleton-Klassen oder globale Instanzen von Klassen ersetzen? Sind sie nicht auf die eine Uebersetzungseinheit beschraenkt?</p>
<p>@Kurz nebenbei<br />
Werde es mir abgewoehnen. <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>thx fuer die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599600</guid><dc:creator><![CDATA[spongebob1]]></dc:creator><pubDate>Wed, 15 Oct 2008 19:17:27 GMT</pubDate></item></channel></rss>