<?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 Problem]]></title><description><![CDATA[<p>Hallo, ich hab da ein kleines Problem mit einer Singletonklasse.<br />
Beim kompilieren bringt der compiler (MinGW-Code::Blocks) folgenden Fehler:</p>
<blockquote>
<p>obj\Debug\PPort.o:: In function <code>ZN5PPortC2Ev': P:\\CPP\\Programme\\KameraSteuerung\\wx\\PPort.cpp:4: multiple definition of</code>PPort::pInstance'<br />
:: === Build finished: 1 errors, 0 warnings ===</p>
</blockquote>
<p>Vieleicht kann mir jemand weiterhelfen, denn ich steh grad irgendwie aufm Schlauch und komm net weiter <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>
<p>Hier ist der Quelltext der Klasse:<br />
<strong>PPort.h:</strong></p>
<pre><code>#ifndef PPORT_H_INCLUDED
#define PPORT_H_INCLUDED

#include &lt;windows.h&gt;

typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

const short OFF = 0;
const short FOCUS = 1;
const short SHOT = 2;
const short FOCUSSHOT = 3;

class PPort
{
public:
    static PPort* Instance();
    void out(const short &amp;byte);
    short in();

private:
    PPort();
    PPort(const PPort&amp;);
    ~PPort();

    static PPort *pInstance;

    PPort *pPPort;
    HINSTANCE hLib;
    inpfuncPtr inp32;
    oupfuncPtr oup32;

    class Guard
    {
    public:
        ~Guard()
        {
            if( PPort::pInstance != NULL )
            {
                delete PPort::pInstance;
                PPort::pInstance = NULL;
            }
        }
    };
    friend class Guard;
};

PPort* PPort::pInstance = 0;

#endif // PPORT_H_INCLUDED
</code></pre>
<p><strong>PPort.cpp:</strong></p>
<pre><code>#include &quot;PPort.h&quot;

PPort::PPort()
{
    hLib = LoadLibrary(&quot;inpout32.dll&quot;);
    inp32 = (inpfuncPtr) GetProcAddress(hLib, &quot;Inp32&quot;);
    oup32 = (oupfuncPtr) GetProcAddress(hLib, &quot;Out32&quot;);
}

PPort::~PPort()
{
    (oup32)(0x378,0);
    FreeLibrary(hLib);
}

PPort* PPort::Instance()
{
        static Guard g;
        if(!pInstance)
            pInstance = new PPort();
        return pInstance;
}

void PPort::out(const short &amp;byte)
{
    (oup32)(0x378,byte);
}

short PPort::in()
{
    return (inp32)(0x378);
}
</code></pre>
<p>PPort::Instance()-&gt;out(OFF);<br />
...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189200/singleton-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:23:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189200.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Aug 2007 15:12:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 15:12:52 GMT]]></title><description><![CDATA[<p>Hallo, ich hab da ein kleines Problem mit einer Singletonklasse.<br />
Beim kompilieren bringt der compiler (MinGW-Code::Blocks) folgenden Fehler:</p>
<blockquote>
<p>obj\Debug\PPort.o:: In function <code>ZN5PPortC2Ev': P:\\CPP\\Programme\\KameraSteuerung\\wx\\PPort.cpp:4: multiple definition of</code>PPort::pInstance'<br />
:: === Build finished: 1 errors, 0 warnings ===</p>
</blockquote>
<p>Vieleicht kann mir jemand weiterhelfen, denn ich steh grad irgendwie aufm Schlauch und komm net weiter <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>
<p>Hier ist der Quelltext der Klasse:<br />
<strong>PPort.h:</strong></p>
<pre><code>#ifndef PPORT_H_INCLUDED
#define PPORT_H_INCLUDED

#include &lt;windows.h&gt;

typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

const short OFF = 0;
const short FOCUS = 1;
const short SHOT = 2;
const short FOCUSSHOT = 3;

class PPort
{
public:
    static PPort* Instance();
    void out(const short &amp;byte);
    short in();

private:
    PPort();
    PPort(const PPort&amp;);
    ~PPort();

    static PPort *pInstance;

    PPort *pPPort;
    HINSTANCE hLib;
    inpfuncPtr inp32;
    oupfuncPtr oup32;

    class Guard
    {
    public:
        ~Guard()
        {
            if( PPort::pInstance != NULL )
            {
                delete PPort::pInstance;
                PPort::pInstance = NULL;
            }
        }
    };
    friend class Guard;
};

PPort* PPort::pInstance = 0;

#endif // PPORT_H_INCLUDED
</code></pre>
<p><strong>PPort.cpp:</strong></p>
<pre><code>#include &quot;PPort.h&quot;

PPort::PPort()
{
    hLib = LoadLibrary(&quot;inpout32.dll&quot;);
    inp32 = (inpfuncPtr) GetProcAddress(hLib, &quot;Inp32&quot;);
    oup32 = (oupfuncPtr) GetProcAddress(hLib, &quot;Out32&quot;);
}

PPort::~PPort()
{
    (oup32)(0x378,0);
    FreeLibrary(hLib);
}

PPort* PPort::Instance()
{
        static Guard g;
        if(!pInstance)
            pInstance = new PPort();
        return pInstance;
}

void PPort::out(const short &amp;byte)
{
    (oup32)(0x378,byte);
}

short PPort::in()
{
    return (inp32)(0x378);
}
</code></pre>
<p>PPort::Instance()-&gt;out(OFF);<br />
...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341648</guid><dc:creator><![CDATA[CKartoffel]]></dc:creator><pubDate>Thu, 09 Aug 2007 15:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 15:36:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#if !defined (SINGLETON_H__INCLUDED)
#define SINGLETON_H__INCLUDED

#if (_MSC_VER &gt; 1000)
#pragma once
#endif 

namespace data
{
	template &lt;class T&gt;
	class Singleton
	{
	public:
		static T&amp; instance() { static T inst; return inst; }

	protected:
		Singleton() {}
		~Singleton() {}
		Singleton&amp; operator=(const Singleton&amp;) { return *this; }
	};
};
#endif // SINGLETON_H__INCLUDED
</code></pre>
<p>...</p>
<pre><code class="language-cpp">class A : public data::Singleton&lt;A&gt;
{
};
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341678</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 09 Aug 2007 15:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 16:40:26 GMT]]></title><description><![CDATA[<p>pack das</p>
<p>CKartoffel schrieb:</p>
<blockquote>
<pre><code>PPort* PPort::pInstance = 0;
</code></pre>
</blockquote>
<p>ins cpp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341737</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Thu, 09 Aug 2007 16:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 19:15:06 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#if !defined (SINGLETON_H__INCLUDED)
#define SINGLETON_H__INCLUDED

#if (_MSC_VER &gt; 1000)
#pragma once
#endif
</code></pre>
</blockquote>
<p>Nur mal eine Verständnisfrage: Reicht nicht eins von beiden, machen nicht beide das gleiche (bin mir nicht sicher)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341822</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 09 Aug 2007 19:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 19:20:15 GMT]]></title><description><![CDATA[<p>Hatten wir schon ein paar mal <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="😉"
    /> Aber egal ... ne machen nicht genau das selbe ... #pragma once verhindert sogar das der die Datei überhaupt noch anguckt ... aber such mal danach im FOrum ... findest de ne genauere Beschreibung zu ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341826</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 09 Aug 2007 19:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 19:51:37 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Hatten wir schon ein paar mal <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="😉"
    /> Aber egal ... ne machen nicht genau das selbe ... #pragma once verhindert sogar das der die Datei überhaupt noch anguckt ... aber such mal danach im FOrum ... findest de ne genauere Beschreibung zu ...</p>
</blockquote>
<p>sicher?<br />
<a href="http://en.wikipedia.org/wiki/Pragma_once" rel="nofollow">wikipedia</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341850</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Thu, 09 Aug 2007 19:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Singleton Problem on Thu, 09 Aug 2007 19:59:03 GMT]]></title><description><![CDATA[<p>Airdamn schrieb:</p>
<blockquote>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>Hatten wir schon ein paar mal <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="😉"
    /> Aber egal ... ne machen nicht genau das selbe ... #pragma once verhindert sogar das der die Datei überhaupt noch anguckt ... aber such mal danach im FOrum ... findest de ne genauere Beschreibung zu ...</p>
</blockquote>
<p>sicher?<br />
<a href="http://en.wikipedia.org/wiki/Pragma_once" rel="nofollow">wikipedia</a></p>
</blockquote>
<p>Wikipedia schrieb:</p>
<blockquote>
<p>Using #pragma once instead of include guards will increase compilation speed on many implementations, because it is a higher-level mechanism; the compiler itself can compare filenames or inodes without having to invoke the C preprocessor to scan the header for #ifndef and #endif.</p>
</blockquote>
<p>Der Compiler darf es zumindest <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1341853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341853</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 09 Aug 2007 19:59:03 GMT</pubDate></item></channel></rss>