<?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[undefined reference bei statischer Klassenvariable]]></title><description><![CDATA[<p>Hallo ihr,<br />
habe da ein Problem bei einem Projekt.<br />
Möchte eine statische Klassenvariable anlegen und diese verändern.<br />
Soweit ganz easy. Allerdings tritt da immer ein Fehler beim kompilieren auf.<br />
.... undefined reference to ....</p>
<p>Um es mal kurz zu machen hier ein Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Test {
	private:
		static int anz;
	public:
		static void setAnz(int p_anz);
};
//	int Test::anz=3;

void Test::setAnz(int p_anz){
	anz = p_anz;
}
</code></pre>
<p>ohne die auskommentiere Zeile tritt der Fehler auf:<br />
Test.cpp:13: undefined reference to `Test::anz'<br />
collect2: ld returned 1 exit status<br />
Zeile 13: anz = p_anz;</p>
<p>Allerdings, wenn ich die auskommentierte Zeile mit rein nehme funktioniert es. In dem Projekt geht das jedoch nicht so einfach.<br />
Wo liegt der Fehler und wie kann ich dann der Klassenvariablen einen Wert zuweisen?</p>
<p>( gcc (GCC) 4.0.4 20060507 (prerelease) (Debian 4.0.3-3) )</p>
<p>Besten Dank im voraus!</p>
<p>MgvfG<br />
Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155814/undefined-reference-bei-statischer-klassenvariable</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 16:30:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155814.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Aug 2006 20:21:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:21:47 GMT]]></title><description><![CDATA[<p>Hallo ihr,<br />
habe da ein Problem bei einem Projekt.<br />
Möchte eine statische Klassenvariable anlegen und diese verändern.<br />
Soweit ganz easy. Allerdings tritt da immer ein Fehler beim kompilieren auf.<br />
.... undefined reference to ....</p>
<p>Um es mal kurz zu machen hier ein Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Test {
	private:
		static int anz;
	public:
		static void setAnz(int p_anz);
};
//	int Test::anz=3;

void Test::setAnz(int p_anz){
	anz = p_anz;
}
</code></pre>
<p>ohne die auskommentiere Zeile tritt der Fehler auf:<br />
Test.cpp:13: undefined reference to `Test::anz'<br />
collect2: ld returned 1 exit status<br />
Zeile 13: anz = p_anz;</p>
<p>Allerdings, wenn ich die auskommentierte Zeile mit rein nehme funktioniert es. In dem Projekt geht das jedoch nicht so einfach.<br />
Wo liegt der Fehler und wie kann ich dann der Klassenvariablen einen Wert zuweisen?</p>
<p>( gcc (GCC) 4.0.4 20060507 (prerelease) (Debian 4.0.3-3) )</p>
<p>Besten Dank im voraus!</p>
<p>MgvfG<br />
Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114107</guid><dc:creator><![CDATA[WhiteLeopard]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:22:58 GMT]]></title><description><![CDATA[<p>int Test::anzahl = 0;</p>
<p>Du musst die statische Variable noch definieren, du hast sie bis jetzt nur deklariert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114108</guid><dc:creator><![CDATA[Helfer in der Not]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:28:54 GMT]]></title><description><![CDATA[<p>Aber wo???</p>
<p>Oben bei der Deklaration ist das nicht erlaubt (laut C++ ISO)<br />
nur für const static Variablen, aber die kann ich ja nicht mehr verändern.<br />
Also muß ich<br />
int Test::anz=3;<br />
nochmal außerhalb der Klasse schreiben?<br />
Denn innerhalb der Klasse darf ich es auch nicht.<br />
Aber wo schreibe ich das außerhalb der Klasse hin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114112</guid><dc:creator><![CDATA[WhiteLeopard]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:37:15 GMT]]></title><description><![CDATA[<p>In irgendeine Implementationsdatei. Sinnvollerweise in der, wo auch die Methodenrümpfe der Klasse zu finden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114115</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:41:29 GMT]]></title><description><![CDATA[<p>Besten Dank,<br />
werde es mal testen und mich dann bei euch melden.</p>
<p>Habe die Variable mit dazugehörigen set- und get-Methoden in einer Header Datei drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114118</guid><dc:creator><![CDATA[WhiteLeopard]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:44:55 GMT]]></title><description><![CDATA[<p>Im Prinzip gilt für die statics genau wie für die Methodenrümpfe die ODR: Wenn Du in mehreren cpp-files dieselbe Headerdatei benutzt wirst Du so (wenn das gepostete der Header ist) Probleme bekommen mit Multiple Definitions.</p>
<p>Dann heisst es entweder die ausserhalb der Klasse stehenden Methoden als Inline markieren oder anfangen Implementationsdateien dafür zu pflegen <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/1114121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114121</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Wed, 09 Aug 2006 20:58:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du könntest eine init()-Methode verwenden, um alle deine Startwerte zu definieren.</p>
<p>MFG winexec*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114126</guid><dc:creator><![CDATA[winexec*]]></dc:creator><pubDate>Wed, 09 Aug 2006 20:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference bei statischer Klassenvariable on Thu, 10 Aug 2006 00:19:11 GMT]]></title><description><![CDATA[<p>Hallo LordJaxom,</p>
<p>genau der Fall mit den multiple definitions trat auf.<br />
Da der meiste Code vom Projekt her vorgegeben ist (altes Programm), und ich dort nur die eine statische Variable einfügen wollte, werde ich es mal mit inline probieren.</p>
<p>Vielen Dank euch allen für die schnelle und kompetente Antwort!<br />
Wenn es klappt, melde ich mich, wenn nicht auch <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>
<p>Horrido<br />
Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1114197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1114197</guid><dc:creator><![CDATA[WhiteLeopard]]></dc:creator><pubDate>Thu, 10 Aug 2006 00:19:11 GMT</pubDate></item></channel></rss>