<?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[Private, statische Klassenvariable]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine kurze frage zu private static Variablen:<br />
Ob das sinnvoll ist das so zu machen sei mal dahingestellt. Es ist ein Teil einer alten Klausuraufgabe. Daher habe ich auch keine Kapselung in .h und cpp vorgenommen, sondern schreibe alles in die .cpp.</p>
<pre><code class="language-cpp">class Verwaltung {
private:
    static ImmoObjekt *IMMOOBJEKTE[N];
public:
    Verwaltung(){
        objektanzahl = 0;
        for(int i = 0; i&lt;N;i++){
            IMMOOBJEKTE[i] = NULL;
        }
    }
</code></pre>
<p>Jedes mal wenn ich im Konstruktur auf das Feld vom Typ *ImmoObjekt zugreifen will meldet mir der Compiler: undefined reference to `Verwaltung::IMMOOBJEKTE'.</p>
<p>Das geschieht allerding nur wenn IMMOOBJEKTE statisch ist. Nicht statisch funktioniert es einwandfrei.<br />
Da ich in der selben Klasse wie die definition bin, habe ich auch von Klassenname::Variable abgesehen (was auch nicht weiterhilft).</p>
<p>Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302418/private-statische-klassenvariable</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 08:39:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302418.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Apr 2012 09:48:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Private, statische Klassenvariable on Wed, 18 Apr 2012 09:48:35 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine kurze frage zu private static Variablen:<br />
Ob das sinnvoll ist das so zu machen sei mal dahingestellt. Es ist ein Teil einer alten Klausuraufgabe. Daher habe ich auch keine Kapselung in .h und cpp vorgenommen, sondern schreibe alles in die .cpp.</p>
<pre><code class="language-cpp">class Verwaltung {
private:
    static ImmoObjekt *IMMOOBJEKTE[N];
public:
    Verwaltung(){
        objektanzahl = 0;
        for(int i = 0; i&lt;N;i++){
            IMMOOBJEKTE[i] = NULL;
        }
    }
</code></pre>
<p>Jedes mal wenn ich im Konstruktur auf das Feld vom Typ *ImmoObjekt zugreifen will meldet mir der Compiler: undefined reference to `Verwaltung::IMMOOBJEKTE'.</p>
<p>Das geschieht allerding nur wenn IMMOOBJEKTE statisch ist. Nicht statisch funktioniert es einwandfrei.<br />
Da ich in der selben Klasse wie die definition bin, habe ich auch von Klassenname::Variable abgesehen (was auch nicht weiterhilft).</p>
<p>Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203165</guid><dc:creator><![CDATA[MatzeOneOSix]]></dc:creator><pubDate>Wed, 18 Apr 2012 09:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Private, statische Klassenvariable on Wed, 18 Apr 2012 10:05:46 GMT]]></title><description><![CDATA[<p>MatzeOneOSix schrieb:</p>
<blockquote>
<p>Hat jemand eine Idee?</p>
</blockquote>
<p>static Member müssen auch irgendwo definiert werden (d.h. irgendwo muss Speicherplatz für die Variable erzeugt werden). Bisher hast du sie nur deklariert(d.h. bekannt gemacht, dass es irgendwo Speicherplatz gibt, der diesen Namen trägt)<sup>*</sup>. Und das Definieren solltest du übrigens nicht im Header tun, denn dann würdest du logischerweise Mehrfachdefinitionen bekommen, wenn der Header mehrfach benutzt wird (und das ist der Sinn von Headern).</p>
<p>Die normalen Member werden erzeugt, wenn du die Klasse tatsächlich instanzierst.</p>
<p><sup>*</sup>: Deinen Fehler meldet auch nicht der Compiler, sondern der Linker. Dem Compiler reicht es, wenn er weißt, dass irgendwo diese Variable existiert. Aber als der Linker dein Programm zusammenbasteln wollte, hat er sie nirgends finden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203173</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Apr 2012 10:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Private, statische Klassenvariable on Wed, 18 Apr 2012 10:15:59 GMT]]></title><description><![CDATA[<p>Vielen Dank schonmal!</p>
<p>Wie müsste das Feld vereinbart werden damit es funktioniert?<br />
Denn, sobald ich static ImmoObjekt *IMMOOBJEKTE[N]; außerhalb einer Klasse setze kommt keine Fehlermeldung. Nur, wie hier, innerhalb der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203181</guid><dc:creator><![CDATA[MatzeOneOSix]]></dc:creator><pubDate>Wed, 18 Apr 2012 10:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Private, statische Klassenvariable on Wed, 18 Apr 2012 10:48:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ImmoObjekt Verwaltung::*IMMOOBJEKTE[N];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2203189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203189</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Apr 2012 10:48:45 GMT</pubDate></item></channel></rss>