<?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[Über eine std::list vom Templatetyp iterieren]]></title><description><![CDATA[<p>Ich versuche in einer Template-Klasse eine Liste von einigen anderen Instanzen der selben Klasse zu halten und dann über diese Liste zu iterieren. In Code habe ich also folgendes:</p>
<pre><code class="language-cpp">#include &lt;list&gt;

template &lt;class C&gt; class listdemo {
    public:
        void somemethod();

    private:
        std::list&lt; listdemo&lt;C&gt;* &gt; ourlist;
};

template &lt;class C&gt; void listdemo&lt;C&gt;::somemethod() {
    std::list&lt; listdemo&lt;C&gt;* &gt;::iterator p;
}
</code></pre>
<p>Nun meckert mein Compiler aber über die vorletzte Zeile:</p>
<pre><code>listtest.cc: In member function ‘void listdemo&lt;C&gt;::somemethod()’:
listtest.cc:12: error: expected `;' before ‘p’
</code></pre>
<p>Was ist denn an dieser Iteratordefinition falsch? Benutze ich keine Template-Klasse, sondern eine &quot;normale&quot;, so funktioniert std::list&lt;listdemo*&gt;::iterator p; ja auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160673/über-eine-std-list-vom-templatetyp-iterieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 09:10:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160673.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Sep 2006 10:37:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 10:37:42 GMT]]></title><description><![CDATA[<p>Ich versuche in einer Template-Klasse eine Liste von einigen anderen Instanzen der selben Klasse zu halten und dann über diese Liste zu iterieren. In Code habe ich also folgendes:</p>
<pre><code class="language-cpp">#include &lt;list&gt;

template &lt;class C&gt; class listdemo {
    public:
        void somemethod();

    private:
        std::list&lt; listdemo&lt;C&gt;* &gt; ourlist;
};

template &lt;class C&gt; void listdemo&lt;C&gt;::somemethod() {
    std::list&lt; listdemo&lt;C&gt;* &gt;::iterator p;
}
</code></pre>
<p>Nun meckert mein Compiler aber über die vorletzte Zeile:</p>
<pre><code>listtest.cc: In member function ‘void listdemo&lt;C&gt;::somemethod()’:
listtest.cc:12: error: expected `;' before ‘p’
</code></pre>
<p>Was ist denn an dieser Iteratordefinition falsch? Benutze ich keine Template-Klasse, sondern eine &quot;normale&quot;, so funktioniert std::list&lt;listdemo*&gt;::iterator p; ja auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145829</guid><dc:creator><![CDATA[mawis]]></dc:creator><pubDate>Thu, 28 Sep 2006 10:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 10:44:23 GMT]]></title><description><![CDATA[<p>versuch mal typename einzufügen:</p>
<pre><code class="language-cpp">#include &lt;list&gt;

template &lt;typename C&gt;
class listdemo {
    public:
        void somemethod();

    private:
        std::list&lt; listdemo&lt;typename C&gt;* &gt; ourlist;
};

template &lt;typename C&gt;
void listdemo&lt;typename C&gt;::somemethod() {
    std::list&lt; listdemo&lt;typename C&gt;* &gt;::iterator p;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1145835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145835</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Thu, 28 Sep 2006 10:44:23 GMT</pubDate></item><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 10:51:52 GMT]]></title><description><![CDATA[<p>1310-Logik schrieb:</p>
<blockquote>
<p>versuch mal typename einzufügen:</p>
</blockquote>
<p>Guter Ansatz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">typename std::list&lt; listdemo&lt;C&gt;* &gt;::iterator p;
</code></pre>
<p>Aber besser hier <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/1145841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145841</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 28 Sep 2006 10:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 10:57:14 GMT]]></title><description><![CDATA[<p>*patsch*</p>
<p>Ja richtig, so war's! Ich hab schon zu lange Abstinenz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145846</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Thu, 28 Sep 2006 10:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 11:02:52 GMT]]></title><description><![CDATA[<p>1310-Logik schrieb:</p>
<blockquote>
<p>versuch mal typename einzufügen:</p>
</blockquote>
<p>Nein, funktioniert auch nicht. Mit &quot;typename&quot; hast du mir allerdings gerade trotzdem den entscheidenden Gedankenanstoß gegeben.</p>
<p>Folgender Code funktioniert:</p>
<pre><code class="language-cpp">template &lt;class C&gt; void listdemo&lt;C&gt;::somefunc() {
    typename std::list&lt; listdemo&lt;C&gt;* &gt;::iterator p;
}
</code></pre>
<p>Also ein &quot;typename&quot; vor den Iterator-Typ eingefügt. Ausführliche Erklärung dazu findet sich in Die C++ Programmiersprache, Bjarne Stroustrup, 4. Auflage, Kapitel C.13.5.</p>
<p>Kurz gesagt: Ein C++-Compiler erkennt iterator in std::list&lt; irgendein_Template_oder_Typ_mit_Template &gt;::iterator nicht als Datentyp. Dies liegt an der Reihenfolge in der der Compiler arbeitet, das heißt er macht die Syntaxprüfung wohl bevor der die Templateparameter ersetzt. Man muss ihm darum in dem Fall über das Schlüsselwort &quot;typename&quot; zusichern, dass das was er da gerade bearbeitet ein Typ sein wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145852</guid><dc:creator><![CDATA[mawis]]></dc:creator><pubDate>Thu, 28 Sep 2006 11:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Über eine std::list vom Templatetyp iterieren on Thu, 28 Sep 2006 11:03:45 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>1310-Logik schrieb:</p>
<blockquote>
<p>versuch mal typename einzufügen:</p>
</blockquote>
<p>Guter Ansatz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">typename std::list&lt; listdemo&lt;C&gt;* &gt;::iterator p;
</code></pre>
<p>Aber besser hier <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>
</blockquote>
<p>Jops genau. Habe ich aber Dank 13010-Logiks Gedankenanstoß inzwischen auch gefunden gehabt.</p>
<p>Danke für eure Hilfe! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1145853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1145853</guid><dc:creator><![CDATA[mawis]]></dc:creator><pubDate>Thu, 28 Sep 2006 11:03:45 GMT</pubDate></item></channel></rss>