<?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[NULL undefiniert (in singelton Klasse)]]></title><description><![CDATA[<p>Ich bekomme folenden Fehler, den ich überhaupt nicht verstehe:</p>
<blockquote>
<p>1&gt;e:\Daten\Dev\SVN\hibiscus\Cpp\AdvancedBeamShaping\QBeamShaping\include\matthias\Common\singleton.h(26) : error C2065: 'NULL': nichtdeklarierter Bezeichner<br />
1&gt; e:\Daten\Dev\SVN\hibiscus\Cpp\AdvancedBeamShaping\QBeamShaping\include\matthias\Common\singleton.h(25): Bei der Kompilierung der Klassen-template der Singleton&lt;C&gt;::CGuard::~CGuard(void)-Memberfunktion<br />
1&gt; with<br />
1&gt; [<br />
1&gt; C=ApplicationMessage<br />
1&gt; ]</p>
</blockquote>
<p>Die Klasse (die ein Sinleton sein soll) ist relativ simpel:</p>
<pre><code class="language-cpp">#include &quot;singleton.h&quot;
#include &quot;widgetDockErrorMessage.h&quot;
#include &lt;QtCore/QPointer&gt;

class ApplicationMessage;

class ApplicationMessage : public Singleton&lt;ApplicationMessage&gt;
{	
public:
	ApplicationMessage();
	virtual ~ApplicationMessage();

	friend class Singleton &lt;ApplicationMessage&gt;;
    static ApplicationMessage* instance ()
    {
       return Singleton &lt;ApplicationMessage&gt;::instance ();
    }

	void setWidget(widgetDockErrorMessage * widget)
	{
		this-&gt;widget = widget;
	}

	void addMessage(QString message) 
	{
		if (widget)
			widget-&gt;addError(message);
	}
private:
	QPointer&lt;widgetDockErrorMessage&gt; widget;

};

ApplicationMessage::ApplicationMessage() : Singleton &lt;ApplicationMessage&gt; () 
{
}

ApplicationMessage::~ApplicationMessage()
{
}
</code></pre>
<p>Die Singelton Klasse funktioniert schon in diversen Projekten und Klassen udn sieht wie folgt aus:</p>
<pre><code class="language-cpp">#ifndef SINGLETON_H_
#define SINGLETON_H_

template &lt;typename C&gt;
class Singleton
{
public:
    static C* instance ()
    {
		static CGuard g;   // Speicherbereinigung
        if (!_instance)
          _instance = new C ();
        return _instance;
    }
    virtual ~Singleton ()
    {
       _instance = 0;
    }

private:
	class CGuard
    {
    public:
       ~CGuard()
       {
          if( NULL != C::_instance )
          {
             delete C::_instance;
             C::_instance = NULL;
          }
       }
    };
    friend class CGuard;

	static C* _instance;
	Singleton( const Singleton&amp; ); /* verhindert, dass eine weitere Instanz via
									Kopie-Konstruktor erstellt werden kann */
    Singleton &amp; operator = (const Singleton &amp;); //Verhindert weitere Instanz durch Kopie

protected:
    Singleton () { }
};

template &lt;typename C&gt; C* Singleton &lt;C&gt;::_instance = 0;

#endif
</code></pre>
<p>Warum könnte hier jetzt NULL unbekannt sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228903/null-undefiniert-in-singelton-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 09:43:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228903.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Dec 2008 10:37:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to NULL undefiniert (in singelton Klasse) on Thu, 04 Dec 2008 10:37:40 GMT]]></title><description><![CDATA[<p>Ich bekomme folenden Fehler, den ich überhaupt nicht verstehe:</p>
<blockquote>
<p>1&gt;e:\Daten\Dev\SVN\hibiscus\Cpp\AdvancedBeamShaping\QBeamShaping\include\matthias\Common\singleton.h(26) : error C2065: 'NULL': nichtdeklarierter Bezeichner<br />
1&gt; e:\Daten\Dev\SVN\hibiscus\Cpp\AdvancedBeamShaping\QBeamShaping\include\matthias\Common\singleton.h(25): Bei der Kompilierung der Klassen-template der Singleton&lt;C&gt;::CGuard::~CGuard(void)-Memberfunktion<br />
1&gt; with<br />
1&gt; [<br />
1&gt; C=ApplicationMessage<br />
1&gt; ]</p>
</blockquote>
<p>Die Klasse (die ein Sinleton sein soll) ist relativ simpel:</p>
<pre><code class="language-cpp">#include &quot;singleton.h&quot;
#include &quot;widgetDockErrorMessage.h&quot;
#include &lt;QtCore/QPointer&gt;

class ApplicationMessage;

class ApplicationMessage : public Singleton&lt;ApplicationMessage&gt;
{	
public:
	ApplicationMessage();
	virtual ~ApplicationMessage();

	friend class Singleton &lt;ApplicationMessage&gt;;
    static ApplicationMessage* instance ()
    {
       return Singleton &lt;ApplicationMessage&gt;::instance ();
    }

	void setWidget(widgetDockErrorMessage * widget)
	{
		this-&gt;widget = widget;
	}

	void addMessage(QString message) 
	{
		if (widget)
			widget-&gt;addError(message);
	}
private:
	QPointer&lt;widgetDockErrorMessage&gt; widget;

};

ApplicationMessage::ApplicationMessage() : Singleton &lt;ApplicationMessage&gt; () 
{
}

ApplicationMessage::~ApplicationMessage()
{
}
</code></pre>
<p>Die Singelton Klasse funktioniert schon in diversen Projekten und Klassen udn sieht wie folgt aus:</p>
<pre><code class="language-cpp">#ifndef SINGLETON_H_
#define SINGLETON_H_

template &lt;typename C&gt;
class Singleton
{
public:
    static C* instance ()
    {
		static CGuard g;   // Speicherbereinigung
        if (!_instance)
          _instance = new C ();
        return _instance;
    }
    virtual ~Singleton ()
    {
       _instance = 0;
    }

private:
	class CGuard
    {
    public:
       ~CGuard()
       {
          if( NULL != C::_instance )
          {
             delete C::_instance;
             C::_instance = NULL;
          }
       }
    };
    friend class CGuard;

	static C* _instance;
	Singleton( const Singleton&amp; ); /* verhindert, dass eine weitere Instanz via
									Kopie-Konstruktor erstellt werden kann */
    Singleton &amp; operator = (const Singleton &amp;); //Verhindert weitere Instanz durch Kopie

protected:
    Singleton () { }
};

template &lt;typename C&gt; C* Singleton &lt;C&gt;::_instance = 0;

#endif
</code></pre>
<p>Warum könnte hier jetzt NULL unbekannt sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625333</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 04 Dec 2008 10:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to NULL undefiniert (in singelton Klasse) on Thu, 04 Dec 2008 10:57:41 GMT]]></title><description><![CDATA[<p>Vermutlich hast Du in diesem Projekt keinen der std-Header inkludiert, in denen NULL definiert wird (also bevor Singleton inkludiert wird, meine ich). Im Zweifelsfall solltest Du cstdlib in singleton inkludieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625344</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 04 Dec 2008 10:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to NULL undefiniert (in singelton Klasse) on Thu, 04 Dec 2008 13:00:30 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Vermutlich hast Du in diesem Projekt keinen der std-Header inkludiert, in denen NULL definiert wird (also bevor Singleton inkludiert wird, meine ich). Im Zweifelsfall solltest Du cstdlib in singleton inkludieren.</p>
</blockquote>
<p>Oder vielleicht gleich auf den <code>nullptr</code> umsteigen?<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-220511.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-220511.html</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625419</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 04 Dec 2008 13:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to NULL undefiniert (in singelton Klasse) on Thu, 04 Dec 2008 13:57:06 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Vermutlich hast Du in diesem Projekt keinen der std-Header inkludiert, in denen NULL definiert wird (also bevor Singleton inkludiert wird, meine ich). Im Zweifelsfall solltest Du cstdlib in singleton inkludieren.</p>
</blockquote>
<p>Oder vielleicht gleich auf den <code>nullptr</code> umsteigen?<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-220511.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-220511.html</a></p>
<p>Grüssli</p>
</blockquote>
<p>Jo, das ist natürlich noch besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625457</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 04 Dec 2008 13:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to NULL undefiniert (in singelton Klasse) on Thu, 04 Dec 2008 14:37:33 GMT]]></title><description><![CDATA[<p><code>0</code> hinschreiben, geht auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625474</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Thu, 04 Dec 2008 14:37:33 GMT</pubDate></item></channel></rss>