<?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[Header-only Klasse, wo static Member initialisieren?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Eine allgemeine Stilfrage: Wenn eine Klasse nur im *.h-File implementiert ist (nur inline-Members), aber zusätzlich eine Variable 'static unsigned counter' Member dieser Klasse ist, wo würde man die dann definieren? Im *.h-File geht nicht, denn das würde beim Linken multiple definitions ergeben. Ich sehe nur zwei Möglichkeiten:</p>
<p>.) Ein extra *.cpp nur für diese eine Variable machen.<br />
.) Die Variable in dem *.cpp-File definieren, wo das main() steht.</p>
<p>Gibt es eine bessere Möglichkeit?</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270567/header-only-klasse-wo-static-member-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 04:43:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270567.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jul 2010 14:57:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Header-only Klasse, wo static Member initialisieren? on Wed, 14 Jul 2010 14:57:01 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Eine allgemeine Stilfrage: Wenn eine Klasse nur im *.h-File implementiert ist (nur inline-Members), aber zusätzlich eine Variable 'static unsigned counter' Member dieser Klasse ist, wo würde man die dann definieren? Im *.h-File geht nicht, denn das würde beim Linken multiple definitions ergeben. Ich sehe nur zwei Möglichkeiten:</p>
<p>.) Ein extra *.cpp nur für diese eine Variable machen.<br />
.) Die Variable in dem *.cpp-File definieren, wo das main() steht.</p>
<p>Gibt es eine bessere Möglichkeit?</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926258</guid><dc:creator><![CDATA[dings]]></dc:creator><pubDate>Wed, 14 Jul 2010 14:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to Header-only Klasse, wo static Member initialisieren? on Wed, 14 Jul 2010 15:08:58 GMT]]></title><description><![CDATA[<p>dings schrieb:</p>
<blockquote>
<p>Gibt es eine bessere Möglichkeit?</p>
</blockquote>
<p>&quot;Besser&quot; nicht. Die Variable in einer eigenen cpp-Datein zu definieren ist am besten.</p>
<p>Man könnte auch noch so etwas machen:</p>
<pre><code class="language-cpp">#ifndef KLASSE_HEADER
#define KLASSE_HEADER

template&lt;int Dummy&gt;
class myclass
{
  static int blah;
};

template&lt;int Dummy&gt;
int myclass&lt;Dummy&gt;::blah = 0;

typedef myclass&lt;0&gt; Klasse;

#endif
</code></pre>
<p>Die one-definition-rule macht für statische Elemente von Klassentemplates eine Ausnahme. Aber nur deswegen aus der Klasse ein Klassentemplate zu basteln ist IMHO blöd.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926269</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 14 Jul 2010 15:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Header-only Klasse, wo static Member initialisieren? on Wed, 14 Jul 2010 15:14:28 GMT]]></title><description><![CDATA[<p>Noch eine Möglichkeit:</p>
<pre><code class="language-cpp">class foo
{
 public:
  static int&amp; bar(){static int interner_wert=0; return interner_wert;}
};
</code></pre>
<p>Die Methode ist zwar etwas ungewohnt in der Benutzung (weil man () nach dem &quot;Variablen&quot;-Namen schreiben muss)., dafür kann aber nichts mehr schief gehen bezüglich der Definition der Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1926272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1926272</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Jul 2010 15:14:28 GMT</pubDate></item></channel></rss>