<?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[Problem mit static deque in Klasse]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte ein Klasse schreiben, die enums ersetzen soll, aber eben noch ein bisschen mehr können soll. Den Sourcecode habe ich unten reinkopiert. Leider streikt der gnu-compiler sobald ich mit push_back() in die statische deque den this-Zeiger hinzufügen will. Kann mir jemand sagen wo der Fehler liegt? Sitz da jetzt echt schon ewig dran. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Danke,<br />
Andreas</p>
<p>Die Header Datei:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;deque&gt;

using namespace std;

class verbose_action {
public:
	string get_string() const {
		return m_action_name;
	}

	static const verbose_action TRACE_EXECUTION1;
	static const verbose_action TRACE_NUMBER1;
	static const verbose_action INTERRUPT1;

private:
	verbose_action(string name)
	{
		m_action_name = name;
		actions.push_back(this);
	}

	static deque&lt;verbose_action* &gt; actions;

	string m_action_name;

};
</code></pre>
<p>Die Cpp-Datei:</p>
<pre><code class="language-cpp">#include &quot;verbose_action.h&quot;

const verbose_action verbose_action::TRACE_EXECUTION1 = verbose_action(&quot;trace_execution&quot;);
const verbose_action verbose_action::TRACE_NUMBER1 = verbose_action(&quot;trace_number&quot;);
const verbose_action verbose_action::INTERRUPT1 = verbose_action(&quot;interrupt&quot;);
</code></pre>
<p>Der Compilerfehler:</p>
<pre><code>verbose_action.o(.gnu.linkonce.t._ZN14verbose_actionC1ESs+0x34): In function `verbose_action::verbose_action[in-charge](std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)':
/usr/include/c++/3.3/bits/stl_deque.h:201: undefined reference to `verbose_action::actions'
collect2: ld returned 1 exit status
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/120521/problem-mit-static-deque-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 09:22:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120521.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Sep 2005 08:25:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit static deque in Klasse on Wed, 14 Sep 2005 08:25:34 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte ein Klasse schreiben, die enums ersetzen soll, aber eben noch ein bisschen mehr können soll. Den Sourcecode habe ich unten reinkopiert. Leider streikt der gnu-compiler sobald ich mit push_back() in die statische deque den this-Zeiger hinzufügen will. Kann mir jemand sagen wo der Fehler liegt? Sitz da jetzt echt schon ewig dran. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Danke,<br />
Andreas</p>
<p>Die Header Datei:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;deque&gt;

using namespace std;

class verbose_action {
public:
	string get_string() const {
		return m_action_name;
	}

	static const verbose_action TRACE_EXECUTION1;
	static const verbose_action TRACE_NUMBER1;
	static const verbose_action INTERRUPT1;

private:
	verbose_action(string name)
	{
		m_action_name = name;
		actions.push_back(this);
	}

	static deque&lt;verbose_action* &gt; actions;

	string m_action_name;

};
</code></pre>
<p>Die Cpp-Datei:</p>
<pre><code class="language-cpp">#include &quot;verbose_action.h&quot;

const verbose_action verbose_action::TRACE_EXECUTION1 = verbose_action(&quot;trace_execution&quot;);
const verbose_action verbose_action::TRACE_NUMBER1 = verbose_action(&quot;trace_number&quot;);
const verbose_action verbose_action::INTERRUPT1 = verbose_action(&quot;interrupt&quot;);
</code></pre>
<p>Der Compilerfehler:</p>
<pre><code>verbose_action.o(.gnu.linkonce.t._ZN14verbose_actionC1ESs+0x34): In function `verbose_action::verbose_action[in-charge](std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)':
/usr/include/c++/3.3/bits/stl_deque.h:201: undefined reference to `verbose_action::actions'
collect2: ld returned 1 exit status
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/871710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871710</guid><dc:creator><![CDATA[kalkproduzent]]></dc:creator><pubDate>Wed, 14 Sep 2005 08:25:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit static deque in Klasse on Wed, 14 Sep 2005 08:58:24 GMT]]></title><description><![CDATA[<p>Die statischen Instanzen von verbose_action hast du definiert, aber die deque selbst nicht.</p>
<p>Nachtrag: Wie ist das eigentlich mit der Instanzierungsreihenfolge bei statischen Membern? Kann man das durch die Deklarationsreihenfolge beeinflussen? Dann wäre es wohl besser, wenn die deque vor den Instanzen stehen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871731</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 14 Sep 2005 08:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit static deque in Klasse on Wed, 14 Sep 2005 10:25:08 GMT]]></title><description><![CDATA[<p>Die Reihenfolge der Instanzierung ist bei statischen Variablen undefiniert. Mit anderen Worten sie fliegen einem um die Ohren, wenn sie von anderen statischen Variablen abhängig sind.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871805</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Wed, 14 Sep 2005 10:25:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit static deque in Klasse on Wed, 14 Sep 2005 15:19:15 GMT]]></title><description><![CDATA[<p>Mathias schrieb:</p>
<blockquote>
<p>Die Reihenfolge der Instanzierung ist bei statischen Variablen undefiniert. Mit anderen Worten sie fliegen einem um die Ohren, wenn sie von anderen statischen Variablen abhängig sind.....</p>
</blockquote>
<p>Das ist so nicht ganz richtig. Die Reihenfolge ist nur über Übersetzungseinheiten hinweig undefiniert. Innerhalb einer Übersetzungseinheit gilt die Definitionsreihenfolge (also die Reihenfolge in der du die Definitionen in der cpp-Datei aufschreibst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/872126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872126</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 14 Sep 2005 15:19:15 GMT</pubDate></item></channel></rss>