<?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[Neudefinition statischer Variablen verhindern]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
In einer Header-Datei habe ich eine abstrakte Klasse mit 7 statischen Variablen.<br />
Diese werden direkt in der Header-Datei außerhalb der Klasse definiert.<br />
Ich möchte die Header-Datei jetzt in zwei CPP-Dateien einbinden, da beide auf die Klassen zugreifen müssen.<br />
Leider hab ich jetzt das Problem, dass die statischen Variablen dadurch zweimal definiert werden, was dann zu einem LNK2005-Fehler führt: Ist bereits definiert.<br />
Kann ich also mit irgendeinem Präprozessor-Befehl nachprüfen, ob die Definition bereits stattgefunden hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307680/neudefinition-statischer-variablen-verhindern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 15:59:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307680.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Sep 2012 12:20:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 12:20:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
In einer Header-Datei habe ich eine abstrakte Klasse mit 7 statischen Variablen.<br />
Diese werden direkt in der Header-Datei außerhalb der Klasse definiert.<br />
Ich möchte die Header-Datei jetzt in zwei CPP-Dateien einbinden, da beide auf die Klassen zugreifen müssen.<br />
Leider hab ich jetzt das Problem, dass die statischen Variablen dadurch zweimal definiert werden, was dann zu einem LNK2005-Fehler führt: Ist bereits definiert.<br />
Kann ich also mit irgendeinem Präprozessor-Befehl nachprüfen, ob die Definition bereits stattgefunden hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247820</guid><dc:creator><![CDATA[Taeli]]></dc:creator><pubDate>Sun, 02 Sep 2012 12:20:42 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 12:24:47 GMT]]></title><description><![CDATA[<p>Nein, du solltest die statischen Variablen in einer cpp-Datei definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247823</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 02 Sep 2012 12:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 12:38:17 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Nein, du solltest die statischen Variablen in einer cpp-Datei definieren.</p>
</blockquote>
<p>Das würde zwar den Fehler lösen, aber ich müsste - wann immer ich die Header-Datei in ein anderes Projekt einbinden wollte - die statischen Variablen dort auch definieren. Gibt es nicht vielleicht eine andere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247825</guid><dc:creator><![CDATA[Taeli]]></dc:creator><pubDate>Sun, 02 Sep 2012 12:38:17 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 13:15:38 GMT]]></title><description><![CDATA[<p>du linkst die cpp einfach mit zu deinem Projekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247831</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 02 Sep 2012 13:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 18:23:44 GMT]]></title><description><![CDATA[<p>Ich kenne zwei mehr oder weniger grässliche Workarounds:</p>
<ol>
<li>
<p>Mach die Klasse zu einem Template.</p>
</li>
<li>
<p>Pack die static Variablen in eine Hilfs-Struct, und besorg dir einen Zeiger/Referenz auf die Hilfs-Struct über eine inline Funktion, die die Instanz dann als function-local-static enthält</p>
</li>
</ol>
<pre><code class="language-cpp">class Foo
{
    struct StaticsDummy
    {
        int foo;
        int bar;
    };

    static StaticsDummy&amp; Statics()
    {
        static StaticsDummy s = {};
        return s;
    }

    void f()
    {
        Statics().foo++;
        Statics().bar--;
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2247916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247916</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 02 Sep 2012 18:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 21:27:16 GMT]]></title><description><![CDATA[<p>Taeli schrieb:</p>
<blockquote>
<p>Kann ich also mit irgendeinem Präprozessor-Befehl nachprüfen, ob die Definition bereits stattgefunden hat?</p>
</blockquote>
<p>Nö, denn PP-Definitionen gelten nur für jeweils eine Übersetzungseinheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247949</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 02 Sep 2012 21:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 20:30:34 GMT]]></title><description><![CDATA[<p>Sone.<br />
Einfach mal die Klappe halten wenn man nix zu sagen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247954</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 02 Sep 2012 20:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Sun, 02 Sep 2012 20:35:58 GMT]]></title><description><![CDATA[<p>Was genau sind das denn für statische Variablen und wieso müssen die in deiner abstrakten Klasse sein? Bei statischen Variablen wär ich rein aus Prinzip immer eher skeptisch, ganz besonders in einer abstrakten Klasse. Nachdem die offenbar sowieso grad Probleme machen, wäre vielleicht ein guter Zeitpunkt, nochmal drüber nachzudenken...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2247955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2247955</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 02 Sep 2012 20:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Neudefinition statischer Variablen verhindern on Mon, 03 Sep 2012 08:15:30 GMT]]></title><description><![CDATA[<blockquote>
<p>In einer Header-Datei habe ich eine abstrakte Klasse mit 7 statischen Variablen.<br />
Diese werden direkt in der Header-Datei außerhalb der Klasse definiert.</p>
</blockquote>
<p>Sieht dein Code etwa so aus ?</p>
<pre><code class="language-cpp">// ABC.h

static int Zahl1;
static int Zahl2;
//...
</code></pre>
<p>Wenn ja probiere doch mal:</p>
<pre><code class="language-cpp">// ABC.h

extern int Zahl1;
extern int Zahl2;

// ABC.cpp

int Zahl1;
int Zahl2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2248025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2248025</guid><dc:creator><![CDATA[Bitte ein Bit]]></dc:creator><pubDate>Mon, 03 Sep 2012 08:15:30 GMT</pubDate></item></channel></rss>