<?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[static vector: Elemente weg]]></title><description><![CDATA[<p>Hallo @all!</p>
<p>Folgende drei Dateien:</p>
<pre><code>// main.cc
// g++ --version: g++ (Debian 4.7.2-5) 4.7.2

#include &lt;iostream&gt;
#include &quot;UseClass.h&quot;

using namespace std;

static Use_c Use[10];

int main(void){

    cout &lt;&lt; &quot;Number of Elements: &quot; &lt;&lt; Use_c::getNumElement() &lt;&lt; endl;
    cout &lt;&lt; &quot;Id: &quot; &lt;&lt; Use_c::getId() &lt;&lt; endl;

    return 0;
}
</code></pre>
<pre><code>// UseClass.h
#include &lt;vector&gt;
#include &lt;inttypes.h&gt;
#include &lt;iostream&gt;

#ifndef USE_H
#define USE_H

class Use_c{

    public:
    static std::vector&lt;Use_c *&gt; vecUse;
    static unsigned getNumElement(void);
    static uint32_t getId(void);
    static uint32_t Id;

    Use_c(void);
};

#endif
</code></pre>
<p>und</p>
<pre><code>// UseClass.cc
#include &quot;UseClass.h&quot;

uint32_t Use_c::Id;
std::vector&lt;Use_c *&gt; Use_c::vecUse;

Use_c::Use_c(void) { 

  Id++;
  vecUse.push_back(this); 
  std::cout &lt;&lt; &quot;Use_c(): &quot;  &lt;&lt; &quot;vecUseAddr = &quot; &lt;&lt; (void *)&amp;vecUse &lt;&lt; std::endl;
}

uint32_t Use_c::getId(void){ return Id; }

unsigned Use_c::getNumElement(void){ 

  std::cout &lt;&lt; &quot;getNumElement(): &quot; &lt;&lt; &quot; vecUseAddr = &quot; &lt;&lt;  (void *)&amp;vecUse &lt;&lt; std::endl;

  return vecUse.size();
}
</code></pre>
<p>Ausgabe liefert:<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
getNumElement(): vecUseAddr = 0x804b760<br />
Number of Elements: 0<br />
Id: 10</p>
<p>Ich verstehe die Ausgabe nicht. Erwartet hätte ich jetzt<br />
<em>Number of Elements: 10</em>.</p>
<p>Wo liege ich falsch?</p>
<p>Besten Dank im Voraus,<br />
Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320245/static-vector-elemente-weg</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 05:54:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320245.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Sep 2013 12:31:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 12:31:38 GMT]]></title><description><![CDATA[<p>Hallo @all!</p>
<p>Folgende drei Dateien:</p>
<pre><code>// main.cc
// g++ --version: g++ (Debian 4.7.2-5) 4.7.2

#include &lt;iostream&gt;
#include &quot;UseClass.h&quot;

using namespace std;

static Use_c Use[10];

int main(void){

    cout &lt;&lt; &quot;Number of Elements: &quot; &lt;&lt; Use_c::getNumElement() &lt;&lt; endl;
    cout &lt;&lt; &quot;Id: &quot; &lt;&lt; Use_c::getId() &lt;&lt; endl;

    return 0;
}
</code></pre>
<pre><code>// UseClass.h
#include &lt;vector&gt;
#include &lt;inttypes.h&gt;
#include &lt;iostream&gt;

#ifndef USE_H
#define USE_H

class Use_c{

    public:
    static std::vector&lt;Use_c *&gt; vecUse;
    static unsigned getNumElement(void);
    static uint32_t getId(void);
    static uint32_t Id;

    Use_c(void);
};

#endif
</code></pre>
<p>und</p>
<pre><code>// UseClass.cc
#include &quot;UseClass.h&quot;

uint32_t Use_c::Id;
std::vector&lt;Use_c *&gt; Use_c::vecUse;

Use_c::Use_c(void) { 

  Id++;
  vecUse.push_back(this); 
  std::cout &lt;&lt; &quot;Use_c(): &quot;  &lt;&lt; &quot;vecUseAddr = &quot; &lt;&lt; (void *)&amp;vecUse &lt;&lt; std::endl;
}

uint32_t Use_c::getId(void){ return Id; }

unsigned Use_c::getNumElement(void){ 

  std::cout &lt;&lt; &quot;getNumElement(): &quot; &lt;&lt; &quot; vecUseAddr = &quot; &lt;&lt;  (void *)&amp;vecUse &lt;&lt; std::endl;

  return vecUse.size();
}
</code></pre>
<p>Ausgabe liefert:<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
Use_c(): vecUseAddr = 0x804b760<br />
getNumElement(): vecUseAddr = 0x804b760<br />
Number of Elements: 0<br />
Id: 10</p>
<p>Ich verstehe die Ausgabe nicht. Erwartet hätte ich jetzt<br />
<em>Number of Elements: 10</em>.</p>
<p>Wo liege ich falsch?</p>
<p>Besten Dank im Voraus,<br />
Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354345</guid><dc:creator><![CDATA[AlexRakete]]></dc:creator><pubDate>Sat, 21 Sep 2013 12:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 13:42:00 GMT]]></title><description><![CDATA[<p>Die Initialisierungsreihenfolge statischer Variablen in verschiedenen übersetzungseinheiten ist nicht definiert. Du benutzt vecUse im Konstruktor schon, bevor er initialisiert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354357</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 21 Sep 2013 13:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 14:03:38 GMT]]></title><description><![CDATA[<p>Besten Dank manni!<br />
War mir sofort klar als ich das von dir gelesen habe.<br />
Probeweise habe ich mal dir Übersetzungreihenfolge umgestellt also <a href="http://UseClass.cc" rel="nofollow">UseClass.cc</a> vor <a href="http://main.cc" rel="nofollow">main.cc</a> übersetzt und siehe da:<br />
Number of Elements: 10<br />
Natürlich reiner Zufall ;).</p>
<pre><code>// main.cc
// g++ --version: g++ (Debian 4.7.2-5) 4.7.2

#include &lt;iostream&gt;
#include &quot;UseClass.h&quot;

using namespace std;

int main(void){

 static Use_c Use[10];

    cout &lt;&lt; &quot;Number of Elements: &quot; &lt;&lt; Use_c::getNumElement() &lt;&lt; endl;
    cout &lt;&lt; &quot;Id: &quot; &lt;&lt; Use_c::getId() &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>sieht da schon besser aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354362</guid><dc:creator><![CDATA[AlexRakete]]></dc:creator><pubDate>Sat, 21 Sep 2013 14:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 14:06:43 GMT]]></title><description><![CDATA[<p>AlexRakete schrieb:</p>
<blockquote>
<p>sieht da schon besser aus.</p>
</blockquote>
<p>Die als <code>static</code> deklarierte Variable befindet sich auch in einer Funktion und wird beim ersten Aufruf initialisiert. Hier hast du mehr Kontrolle als bei globalen Variablen und statischen Membervariablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354364</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Sep 2013 14:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 20:01:18 GMT]]></title><description><![CDATA[<p>Das <code>static</code> da in der <code>main</code> -Funktion ist überflüssig. Schau mal in Dein C++ Buch Deiner Wahl, was <code>static</code> in diversen Kontexten macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354510</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 21 Sep 2013 20:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 21:41:57 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Das <code>static</code> da in der <code>main</code> -Funktion ist überflüssig. Schau mal in Dein C++ Buch Deiner Wahl, was <code>static</code> in diversen Kontexten macht.</p>
</blockquote>
<p>Mir ist sehr klar was <code>static</code> macht. Damit zeige ich an worauf es bei dieser Variable, Objekt ankommt. <code>main ()</code> ist nur ein Spezialfall der ohne <code>static</code> funktioniert.<br />
Kopiere mal das ohne <code>static</code> in eine Funktion die von main aufgerufen wird, dann stürzt das nur ab wenn man Glück hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354543</guid><dc:creator><![CDATA[AlexRakete]]></dc:creator><pubDate>Sat, 21 Sep 2013 21:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to static vector: Elemente weg on Sat, 21 Sep 2013 23:29:14 GMT]]></title><description><![CDATA[<p>AlexRakete schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Das <code>static</code> da in der <code>main</code> -Funktion ist überflüssig. Schau mal in Dein C++ Buch Deiner Wahl, was <code>static</code> in diversen Kontexten macht.</p>
</blockquote>
<p>Mir ist sehr klar was <code>static</code> macht. Damit zeige ich an worauf es bei dieser Variable, Objekt ankommt. <code>main ()</code> ist nur ein Spezialfall der ohne <code>static</code> funktioniert.<br />
Kopiere mal das ohne <code>static</code> in eine Funktion die von main aufgerufen wird, dann stürzt das nur ab wenn man Glück hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> .</p>
</blockquote>
<p>Wieso sollte das abstürzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354566</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 21 Sep 2013 23:29:14 GMT</pubDate></item></channel></rss>