<?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[Template Definition scheitert - Warum?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein kleines Problem bei einem Template.</p>
<p>Ich habe eine Template-Klasse A, die nutzt std::list und hat intern ein struct namens B, der public ist.</p>
<p>Wenn ich versuche die Definition</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
[
</code></pre>
<p>zu schreiben, streikt der Compiler. Auch</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;A&lt;T&gt;::B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
[
</code></pre>
<p>wird verweigert.</p>
<p>Wo liegt der Fehler? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284143/template-definition-scheitert-warum</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 05:44:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284143.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Mar 2011 16:39:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 16:39:19 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein kleines Problem bei einem Template.</p>
<p>Ich habe eine Template-Klasse A, die nutzt std::list und hat intern ein struct namens B, der public ist.</p>
<p>Wenn ich versuche die Definition</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
[
</code></pre>
<p>zu schreiben, streikt der Compiler. Auch</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;A&lt;T&gt;::B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
[
</code></pre>
<p>wird verweigert.</p>
<p>Wo liegt der Fehler? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040477</guid><dc:creator><![CDATA[Gargamel12]]></dc:creator><pubDate>Sat, 26 Mar 2011 16:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 16:41:49 GMT]]></title><description><![CDATA[<p>wenn du das template um die klasse hast und das ganze inline definierst, musst du nicht nochmal den template parameter wiederholen</p>
<p>beispiel:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class A
{
    // template&lt;typename T&gt; wäre hier falsch, falls es der gleiche parameter sein soll
    std::list&lt;T&gt; returnList()
    { /* ... */ }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2040480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040480</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 26 Mar 2011 16:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 16:45:49 GMT]]></title><description><![CDATA[<p>Nein, die Definition ist außerhalb. Deklaration und Definition sind identisch, aber der COmpiler meint, sie wären nicht identisch.</p>
<p>Keine Ahnung warum.</p>
<p>Die Deklaration in der Klasse ist</p>
<pre><code class="language-cpp">list&lt;Vertex&gt; getVertices(const T&amp;);
</code></pre>
<p>Die Definition ist</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;A&lt;T&gt;::B&gt; A&lt;T&gt;::getVertices(const T&amp; x
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2040482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040482</guid><dc:creator><![CDATA[Gargamel12]]></dc:creator><pubDate>Sat, 26 Mar 2011 16:45:49 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 16:46:43 GMT]]></title><description><![CDATA[<p>Sorry, meinte natürlich</p>
<pre><code class="language-cpp">list&lt;B&gt; getVertices(const T&amp;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2040483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040483</guid><dc:creator><![CDATA[Gargamel12]]></dc:creator><pubDate>Sat, 26 Mar 2011 16:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 17:09:37 GMT]]></title><description><![CDATA[<p>Wenn ich den struct B durch soetwas wie std::string oder int ersetze funktioniert alles.</p>
<pre><code class="language-cpp">list&lt;std::string&gt; getVertices(const T&amp;);
</code></pre>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;std::string&gt; A&lt;T&gt;::getVertices(const T&amp; x)
</code></pre>
<p>Warum nimmt er den struct B aus Klasse A nicht an?</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class A
{
public:
    struct B { /* ... */ }
    std::list&lt;B&gt; getVertices(const T&amp;);
    { /* ... */ }
</code></pre>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;A&lt;T&gt;::B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040493</guid><dc:creator><![CDATA[Gargamel12]]></dc:creator><pubDate>Sat, 26 Mar 2011 17:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 17:20:22 GMT]]></title><description><![CDATA[<p>1. Wieso gibst du nicht die Fehlermeldung mit an? Das würde den Leuten sehr helfen, dir zu helfen.<br />
2. Meine Vermutung ist die folgende:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
list&lt;typename A&lt;T&gt;::B&gt; A&lt;T&gt;::getVertices(const T&amp; x)
//   ^^^^^^^^
</code></pre>
<p>Du musst dem Kompiler mitteilen, dass sich hinter <code>B</code> ein Typ versteckt. Da <code>A</code> von Templateparameter <code>T</code> abhängt, kann nicht klar festgestellt werden, ob <code>B</code> wirklich ein Typ ist. Daher muss das <code>typename</code> dort hin.</p>
<p>Beim Rückgabewert ist man noch ausserhalb der Scopes, daher ist dies wahrscheinlich bei der Definition nötig, bei der Deklaration allerdings nicht, da man die Deklaration im Scope der Klasse schreibt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040500</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 26 Mar 2011 17:20:22 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 17:21:14 GMT]]></title><description><![CDATA[<p>Das sieht nach nem Fehlenden typename aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040501</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 26 Mar 2011 17:21:14 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 17:23:09 GMT]]></title><description><![CDATA[<p><strong>typename</strong> A&lt;T&gt;::B</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2040503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040503</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 26 Mar 2011 17:23:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template Definition scheitert - Warum? on Sat, 26 Mar 2011 17:26:12 GMT]]></title><description><![CDATA[<p>Danke an euch beide, ihr seid die Besten! Das wars. <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/2040504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2040504</guid><dc:creator><![CDATA[Gargamel12]]></dc:creator><pubDate>Sat, 26 Mar 2011 17:26:12 GMT</pubDate></item></channel></rss>