<?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[Klassen in Klassentemplates]]></title><description><![CDATA[<p>Hallo<br />
Ich habe folgendes Problem:<br />
Eine Klasse</p>
<pre><code class="language-cpp">template &lt;class T&gt; class Stream
{
  class Iterator
    {
      ....
    }
};
</code></pre>
<p>soll einen Datenstrom darstellen, dessen Zeichen vom Typ T sind.</p>
<p>nun will ich eine Klasse</p>
<pre><code class="language-cpp">template &lt;class T&gt; class Printer
{
  void print (Stream&lt;T&gt;::Iterator start);
};
</code></pre>
<p>machen.</p>
<p>Das geht aber nicht - g++ sagt folgendes:<br />
error : 'class Stream&lt;T&gt;::Iterator' is not a type</p>
<p>Jetzt frage ich mich schon, wie das sein kann...<br />
Entweder ist Stream&lt;T&gt; keine richtige Klasse, sondern bleibt ein template, weil<br />
kein fester Typ angegeben ist (wäre aber doch irgendwie inkonsistent, oder?), oder ich hab irgendwie nen Syntax- oder Denkfehler. Dass g++ <strong>class</strong> Stream&lt;T&gt;::Iterator nicht als Typ anerkennt sieht doch auch irgendwie nach Widerspruch aus.<br />
Der gesamte Code ist natürlich komplexer, ich hab hier nur das wesentliche isoliert, ich würde es also schon gerne so aufbauen, sofern das nicht unmöglich ist.</p>
<p>Danke schonmal für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207789/klassen-in-klassentemplates</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 08:59:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207789.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Mar 2008 19:28:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen in Klassentemplates on Tue, 11 Mar 2008 19:38:00 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich habe folgendes Problem:<br />
Eine Klasse</p>
<pre><code class="language-cpp">template &lt;class T&gt; class Stream
{
  class Iterator
    {
      ....
    }
};
</code></pre>
<p>soll einen Datenstrom darstellen, dessen Zeichen vom Typ T sind.</p>
<p>nun will ich eine Klasse</p>
<pre><code class="language-cpp">template &lt;class T&gt; class Printer
{
  void print (Stream&lt;T&gt;::Iterator start);
};
</code></pre>
<p>machen.</p>
<p>Das geht aber nicht - g++ sagt folgendes:<br />
error : 'class Stream&lt;T&gt;::Iterator' is not a type</p>
<p>Jetzt frage ich mich schon, wie das sein kann...<br />
Entweder ist Stream&lt;T&gt; keine richtige Klasse, sondern bleibt ein template, weil<br />
kein fester Typ angegeben ist (wäre aber doch irgendwie inkonsistent, oder?), oder ich hab irgendwie nen Syntax- oder Denkfehler. Dass g++ <strong>class</strong> Stream&lt;T&gt;::Iterator nicht als Typ anerkennt sieht doch auch irgendwie nach Widerspruch aus.<br />
Der gesamte Code ist natürlich komplexer, ich hab hier nur das wesentliche isoliert, ich würde es also schon gerne so aufbauen, sofern das nicht unmöglich ist.</p>
<p>Danke schonmal für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472341</guid><dc:creator><![CDATA[gplcoder]]></dc:creator><pubDate>Tue, 11 Mar 2008 19:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen in Klassentemplates on Tue, 11 Mar 2008 19:35:52 GMT]]></title><description><![CDATA[<p>Der Compiler weiß zum Zeitpunkt seiner Arbeit nicht, dass Stream&lt;T&gt;::Iterator ein Typ ist, weil du später im Code eine Spezialisierung für ein bestimmtes T machen könntest, sodass Iterator etwas völlig anderes ist bzw. gar nicht existiert. Deshalb musst du ihm das sagen:</p>
<pre><code class="language-cpp">typename Stream&lt;T&gt;::Iterator
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1472346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472346</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 11 Mar 2008 19:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen in Klassentemplates on Tue, 11 Mar 2008 19:45:45 GMT]]></title><description><![CDATA[<p>Das funktioniert wunderbar!<br />
Hatte zuvor von dem Keyword noch nix gehört...<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472357</guid><dc:creator><![CDATA[gplcoder]]></dc:creator><pubDate>Tue, 11 Mar 2008 19:45:45 GMT</pubDate></item></channel></rss>