<?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[std::list mit Templateklasse]]></title><description><![CDATA[<p>Moin moin</p>
<p>ich möchte in eine Liste Objekte einer Templateklasse einfügen und mittels Iterator durch die Liste wandern.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class PacketIdentifier {
    public :
        PacketIdentifier (const T&amp; element);
        T element;
};

template &lt;class T&gt;
class FilterPacketIdentifier {
    private :
        typedef std::list&lt; PacketIdentifier&lt;T&gt; &gt;	TPacketIdentifierList;
        TPacketIdentifierList           list;
        TPacketIdentifierList::iterator iter;
};
</code></pre>
<p>Das Ersellen des Listenobjekts funktioniert auch, nur für den Iterator bekomme ich vom Kompiler diese Fehlermeldung:</p>
<blockquote>
<p>filter_packet_identifier.h:71: Fehler: Typ »std::list&lt;PacketIdentifier&lt;T&gt;, std::allocator&lt;PacketIdentifier&lt;T&gt; &gt; &gt;« ist nicht vom Typ »FilterPacketIdentifier&lt;T&gt;« abgeleitet</p>
</blockquote>
<p>Weiß jemand, was das bedeutet?</p>
<p>cu<br />
Thundernail</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202553/std-list-mit-templateklasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 18:05:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202553.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Jan 2008 20:10:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 20:10:18 GMT]]></title><description><![CDATA[<p>Moin moin</p>
<p>ich möchte in eine Liste Objekte einer Templateklasse einfügen und mittels Iterator durch die Liste wandern.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class PacketIdentifier {
    public :
        PacketIdentifier (const T&amp; element);
        T element;
};

template &lt;class T&gt;
class FilterPacketIdentifier {
    private :
        typedef std::list&lt; PacketIdentifier&lt;T&gt; &gt;	TPacketIdentifierList;
        TPacketIdentifierList           list;
        TPacketIdentifierList::iterator iter;
};
</code></pre>
<p>Das Ersellen des Listenobjekts funktioniert auch, nur für den Iterator bekomme ich vom Kompiler diese Fehlermeldung:</p>
<blockquote>
<p>filter_packet_identifier.h:71: Fehler: Typ »std::list&lt;PacketIdentifier&lt;T&gt;, std::allocator&lt;PacketIdentifier&lt;T&gt; &gt; &gt;« ist nicht vom Typ »FilterPacketIdentifier&lt;T&gt;« abgeleitet</p>
</blockquote>
<p>Weiß jemand, was das bedeutet?</p>
<p>cu<br />
Thundernail</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435613</guid><dc:creator><![CDATA[Thundernail]]></dc:creator><pubDate>Sat, 12 Jan 2008 20:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 20:20:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">typename TPacketIdentifierList::iterator iter;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1435617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435617</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 12 Jan 2008 20:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 20:34:26 GMT]]></title><description><![CDATA[<p>Danke, funktioniert.</p>
<p>Ich kann zwar nicht ganz nachvollziehen, warum das 'typename' hilft,...</p>
<p>Danke<br />
Thundernail</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435620</guid><dc:creator><![CDATA[Thundernail]]></dc:creator><pubDate>Sat, 12 Jan 2008 20:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 21:08:10 GMT]]></title><description><![CDATA[<p>Thundernail schrieb:</p>
<blockquote>
<p>Danke, funktioniert.</p>
<p>Ich kann zwar nicht ganz nachvollziehen, warum das 'typename' hilft,...</p>
<p>Danke<br />
Thundernail</p>
</blockquote>
<p>Ist einer der 2 &quot;template-Klassiker&quot; (der andere ist &quot;Implementation-gehört-in-den-Header&quot;)</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">namespace TPacketIdentifierList {
   int iterator;
};

// Was bedeutet nun das hier:
TPacketIdentifierList::iterator
// ... ?
</code></pre>
<p>Sprich: Der Compiler kann nicht wissen, ob es sich bei dem Konstrukt &quot;A::B&quot; um einen Typen oder eine Variable handelt (selbst wenn A eine Klasse ist, kann B ein static-Member sein) ... deswegen geht er von einer Variable aus, es sei denn, man sagt ihm, dass es anders ist (und dafür gibt's das Schlüsselwort typename).</p>
<p>Vielleicht wäre es auch klarer, wenn Du den weitverbreiteten Ratschlag beherzigen würdest und Templatedeklarationen mit</p>
<pre><code class="language-cpp">template &lt;typename ...&gt;
</code></pre>
<p>schreiben würdest.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435635</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 12 Jan 2008 21:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 21:21:34 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Sprich: Der Compiler kann nicht wissen, ob es sich bei dem Konstrukt &quot;A::B&quot; um einen Typen oder eine Variable handelt (selbst wenn A eine Klasse ist, kann B ein static-Member sein) ... deswegen geht er von einer Variable aus, es sei denn, man sagt ihm, dass es anders ist (und dafür gibt's das Schlüsselwort typename).</p>
</blockquote>
<p>eigentlich geht es bei typename nur darum, compiler-gerechten code zu schreiben. wenn der parameter nämlich tatsächlich einen typ und eine variable mit demselben namen hat, hilft auch kein typename mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435646</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 12 Jan 2008 21:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::list mit Templateklasse on Sat, 12 Jan 2008 21:28:58 GMT]]></title><description><![CDATA[<p>Danke für die Erklärung. <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/1435649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435649</guid><dc:creator><![CDATA[Thundernail]]></dc:creator><pubDate>Sat, 12 Jan 2008 21:28:58 GMT</pubDate></item></channel></rss>