<?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 und ein komisches Verhalten]]></title><description><![CDATA[<p>Hey Leutem,<br />
ich have meine Fassadenklasse als Singleton impl. und jetzt Probleme mit so manchen member-varias.</p>
<pre><code class="language-cpp">class Instance {
	public:
		static	Instance* Instance();
		void	init();										//!&lt; init all necessary classes and starts the threads
	private:
		//!&lt; attendant for memory-clearing for singleton
		class Attendant {
			public:
				~Attendant() {
					if( Instance::dInstance != 0 )
						delete Instance::dInstance;
				}
		};
		friend class Attendant;

		Instance(){}										//!&lt; constructor
		~Instance(){}										//!&lt; destructor
		Instance(const Instance&amp;);						//!&lt; copy constructor

		static	GInstance	*dInstance;				//!&lt; static instance
		Handler			*handler;
		// func

		static void* 			threadreceive(void*);		
};
</code></pre>
<p>In der oben (public) stehenden Funktion init() wird der Handlerpointer mit<br />
handler = new Handler() init. Der Komp. schluck das auch aber zu laufzeit gibt es imma da ein Segmentationsfehler! Warum? Gibt in meinen Augen keinen sind (siehe public Instance())</p>
<pre><code class="language-cpp">Instance* Instance::Instance() {
	static Attendant attendant;
	if (dInstance == 0) {
		dInstance = new dInstance(); //!&lt; create an instance
	}
	return dInstance;

}
</code></pre>
<p>Wer weiss rat?!?!?!</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231261/singleton-und-ein-komisches-verhalten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 22:43:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231261.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Jan 2009 08:30:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 08:30:34 GMT]]></title><description><![CDATA[<p>Hey Leutem,<br />
ich have meine Fassadenklasse als Singleton impl. und jetzt Probleme mit so manchen member-varias.</p>
<pre><code class="language-cpp">class Instance {
	public:
		static	Instance* Instance();
		void	init();										//!&lt; init all necessary classes and starts the threads
	private:
		//!&lt; attendant for memory-clearing for singleton
		class Attendant {
			public:
				~Attendant() {
					if( Instance::dInstance != 0 )
						delete Instance::dInstance;
				}
		};
		friend class Attendant;

		Instance(){}										//!&lt; constructor
		~Instance(){}										//!&lt; destructor
		Instance(const Instance&amp;);						//!&lt; copy constructor

		static	GInstance	*dInstance;				//!&lt; static instance
		Handler			*handler;
		// func

		static void* 			threadreceive(void*);		
};
</code></pre>
<p>In der oben (public) stehenden Funktion init() wird der Handlerpointer mit<br />
handler = new Handler() init. Der Komp. schluck das auch aber zu laufzeit gibt es imma da ein Segmentationsfehler! Warum? Gibt in meinen Augen keinen sind (siehe public Instance())</p>
<pre><code class="language-cpp">Instance* Instance::Instance() {
	static Attendant attendant;
	if (dInstance == 0) {
		dInstance = new dInstance(); //!&lt; create an instance
	}
	return dInstance;

}
</code></pre>
<p>Wer weiss rat?!?!?!</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641521</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Thu, 08 Jan 2009 08:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 08:37:36 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">static    GInstance    *dInstance;                //!&lt; static instance
</code></pre>
</blockquote>
<p>Kann es sein das du uns eine weitere Klasse vorenthälst? Wo kommt GInstance in deinem Code vor? Weil ich sehe davon nur was in dem codestück, sonst nix?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641527</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 08 Jan 2009 08:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 08:41:09 GMT]]></title><description><![CDATA[<p>Sorry, habe alle vorher umgenannt, G...Instance soll für euch nur Instance heißen. Sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641530</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Thu, 08 Jan 2009 08:41:09 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 08:45:44 GMT]]></title><description><![CDATA[<p>davidwal schrieb:</p>
<blockquote>
<p>Sorry, habe alle vorher umgenannt</p>
</blockquote>
<p>Dabei sollte man aufpassen, dass die Klasse hinterher nicht heißt wie eine ihrer statischen Methoden. <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>Wie wird init denn aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641531</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 08 Jan 2009 08:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 08:46:44 GMT]]></title><description><![CDATA[<p>Hmmm ich kann auch falsch liegen, aber meine erste Vermutung ist,deine Benennung der Instance() Methode.Bennen die spasses Halber mal um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641533</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 08 Jan 2009 08:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:10:53 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>davidwal schrieb:</p>
<blockquote>
<p>Sorry, habe alle vorher umgenannt</p>
</blockquote>
<p>Dabei sollte man aufpassen, dass die Klasse hinterher nicht heißt wie eine ihrer statischen Methoden. <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>Wie wird init denn aufgerufen?</p>
</blockquote>
<p>So sind meine main() funktion aus.</p>
<pre><code class="language-cpp">Instance* Instance::dInstance = 0; //!&lt; initialize Pointer

int main(void) {
	GInstance* instance;
	// run
	instance-&gt;getInstance();   //!!! habe das GERADE so umgenannt getInstance() war Instance()!!!
	instance-&gt;init();
	return EXIT_SUCCESS;
}
</code></pre>
<p>hier noch die init()</p>
<pre><code class="language-cpp">void Instance::init(){
	// init threads
	pthread_t receive;
	pthread_create(&amp;receive,NULL,&amp;Instance::threadreceive,(void*)this);

	// init objects
	handler = new Handler(); /// hier krackt es (segmen. Fehler)

	while (true) {
		std::cout.flush();
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1641549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641549</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:10:53 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:15:38 GMT]]></title><description><![CDATA[<p>davidwal schrieb:</p>
<blockquote>
<p>GInstance* instance;</p>
</blockquote>
<p>instance ist ein unitialisierter Zeiger.</p>
<p>davidwal schrieb:</p>
<blockquote>
<p>instance-&gt;getInstance();</p>
</blockquote>
<p>Du rufst eine statische Methode über einen unitialisierten Zeiger auf. Keine Ahnung, was der Standard dazu sagt. Für statische Methoden brauchst du gar kein Objekt zum Aufrufen. getInstance gibt zwar einen gültigen Zeiger zurück, aber den Rückgabewert lässt du hintenüber fallen.</p>
<p>davidwal schrieb:</p>
<blockquote>
<p>instance-&gt;init();</p>
</blockquote>
<p>instance ist immer noch ein unitialisierter Zeiger -&gt; PENG.</p>
<p>Das sollte wohl so aussehen:</p>
<pre><code class="language-cpp">Instance* instance = Instance::getInstance();
instance-&gt;init();
</code></pre>
<p>Weiß der Geier, warum getInstance nicht gleich init aufruft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641551</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:16:35 GMT]]></title><description><![CDATA[<p>Komisch, habe mal etwas probiert und es geht aus!!!!</p>
<p>in der init() Funktion:</p>
<pre><code class="language-cpp">handler = new Handler();
//durch
getInstance()-&gt;handler = new Handler();
//ersetzen und voila, es geht!
</code></pre>
<p>Nur leider verstehe ich dieses Verhalten nicht ganz! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641554</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:22:56 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>davidwal schrieb:</p>
<blockquote>
<p>GInstance* instance;</p>
</blockquote>
<p>instance ist ein unitialisierter Zeiger.</p>
<p>davidwal schrieb:</p>
<blockquote>
<p>instance-&gt;getInstance();</p>
</blockquote>
<p>Du rufst eine statische Methode über einen unitialisierten Zeiger auf. Keine Ahnung, was der Standard dazu sagt. Für statische Methoden brauchst du gar kein Objekt zum Aufrufen. getInstance gibt zwar einen gültigen Zeiger zurück, aber den Rückgabewert lässt du hintenüber fallen.</p>
<p>davidwal schrieb:</p>
<blockquote>
<p>instance-&gt;init();</p>
</blockquote>
<p>instance ist immer noch ein unitialisierter Zeiger -&gt; PENG.</p>
<p>Das sollte wohl so aussehen:</p>
<pre><code class="language-cpp">Instance* instance = Instance::getInstance();
instance-&gt;init();
</code></pre>
<p>Weiß der Geier, warum getInstance nicht gleich init aufruft.</p>
</blockquote>
<p>g++<br />
main.cpp: In function »int main()«:<br />
main.cpp:15: Fehler: »Instance« wurde nicht deklariert</p>
<p>Zeile 15 Instance* instance = Instance::getInstance(); <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1641558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641558</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:24:21 GMT]]></title><description><![CDATA[<p>Also in dem Beispiel hier:</p>
<p>davidwal schrieb:</p>
<blockquote>
<p>MFK schrieb:</p>
<blockquote>
<p>davidwal schrieb:</p>
<blockquote>
<p>Sorry, habe alle vorher umgenannt</p>
</blockquote>
<p>Dabei sollte man aufpassen, dass die Klasse hinterher nicht heißt wie eine ihrer statischen Methoden. <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>Wie wird init denn aufgerufen?</p>
</blockquote>
<p>So sind meine main() funktion aus.</p>
<pre><code class="language-cpp">Instance* Instance::dInstance = 0; //!&lt; initialize Pointer

int main(void) {
	GInstance* instance;
	// run
	instance-&gt;getInstance();   //!!! habe das GERADE so umgenannt getInstance() war Instance()!!!
	instance-&gt;init();
	return EXIT_SUCCESS;
}
</code></pre>
<p>hier noch die init()</p>
<pre><code class="language-cpp">void Instance::init(){
	// init threads
	pthread_t receive;
	pthread_create(&amp;receive,NULL,&amp;Instance::threadreceive,(void*)this);

	// init objects
	handler = new Handler(); /// hier krackt es (segmen. Fehler)

	while (true) {
		std::cout.flush();
	}
}
</code></pre>
</blockquote>
<p>Heißt es ja bei dir immernoch GInstance, vielleicht wieder Vergessen umzubennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641560</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton und ein komisches Verhalten on Thu, 08 Jan 2009 09:53:35 GMT]]></title><description><![CDATA[<p>davidwal schrieb:</p>
<blockquote>
<p>Nur leider verstehe ich dieses Verhalten nicht ganz! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Ganz einfach, dein this-Zeiger ist hier ungültig, weil du init über einen unitialisierten Zeiger aufrufst. Mit dem Zeiger aus getInstance geht's natürlich, ändert aber nichts am grundsätzlichen Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641569</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 08 Jan 2009 09:53:35 GMT</pubDate></item></channel></rss>