<?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[Implemantionsfrage bei Element-Templates]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Frage zur Implementation von Element-Templates.<br />
Die Klasse sieht wie folgt aus:</p>
<pre><code class="language-cpp">namespace nsFoo
{

template&lt;class classType&gt;
class Foo
{
private:
public:

  Foo() {}
 ~Foo() {}

  // Element-Template
  template&lt;class Element&gt;
  classType * name(const Element &amp;e);
};
}
</code></pre>
<p>Wie implemetiere ich jetzt die Memberfunktion &quot;name&quot;. Ich wollte Sie nich implizit inline implementieren aus Übersichtlichkeitsgründen, sondern die Implementation zu den übrigen Membern schreiben. Mein armer Kompiler versteht mich nicht (MS C++ Compiler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> und ich weiß nicht wie ich für ausdrücken soll.<br />
Folgendes dachte ich mir:</p>
<pre><code class="language-cpp">namespace nsFoo
{

// Implementationsdetails
template&lt;class classType, class Element&gt;
classType * Foo&lt;classType&gt;::name&lt;Element&gt;(const Element &amp;e)
{
  // Code...
}
}
</code></pre>
<p>Der Kompiler wirft folgende Fehler:</p>
<pre><code>Fehler	1	error C2768: 'nsFoot::Foo&lt;classType&gt;::name': Unzulässige Verwendung von expliziten Vorlagenargumenten	foo.h	88	
Fehler	2	error C2768: 'nsFoot::Foo&lt;classType&gt;::name': Unzulässige Verwendung von expliziten Vorlagenargumenten	foo.h	88	
Fehler	3	error C2244: 'nsFoot::Foo&lt;classType&gt;::name': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden	foo.h	88
</code></pre>
<p>Hat hier vielleicht jemand eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148438/implemantionsfrage-bei-element-templates</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 20:48:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148438.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 May 2006 17:12:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implemantionsfrage bei Element-Templates on Fri, 26 May 2006 17:15:20 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Frage zur Implementation von Element-Templates.<br />
Die Klasse sieht wie folgt aus:</p>
<pre><code class="language-cpp">namespace nsFoo
{

template&lt;class classType&gt;
class Foo
{
private:
public:

  Foo() {}
 ~Foo() {}

  // Element-Template
  template&lt;class Element&gt;
  classType * name(const Element &amp;e);
};
}
</code></pre>
<p>Wie implemetiere ich jetzt die Memberfunktion &quot;name&quot;. Ich wollte Sie nich implizit inline implementieren aus Übersichtlichkeitsgründen, sondern die Implementation zu den übrigen Membern schreiben. Mein armer Kompiler versteht mich nicht (MS C++ Compiler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> und ich weiß nicht wie ich für ausdrücken soll.<br />
Folgendes dachte ich mir:</p>
<pre><code class="language-cpp">namespace nsFoo
{

// Implementationsdetails
template&lt;class classType, class Element&gt;
classType * Foo&lt;classType&gt;::name&lt;Element&gt;(const Element &amp;e)
{
  // Code...
}
}
</code></pre>
<p>Der Kompiler wirft folgende Fehler:</p>
<pre><code>Fehler	1	error C2768: 'nsFoot::Foo&lt;classType&gt;::name': Unzulässige Verwendung von expliziten Vorlagenargumenten	foo.h	88	
Fehler	2	error C2768: 'nsFoot::Foo&lt;classType&gt;::name': Unzulässige Verwendung von expliziten Vorlagenargumenten	foo.h	88	
Fehler	3	error C2244: 'nsFoot::Foo&lt;classType&gt;::name': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden	foo.h	88
</code></pre>
<p>Hat hier vielleicht jemand eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065682</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Fri, 26 May 2006 17:15:20 GMT</pubDate></item><item><title><![CDATA[Reply to Implemantionsfrage bei Element-Templates on Fri, 26 May 2006 17:21:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">namespace nsFoo
{

// Implementationsdetails
template&lt;class classType&gt;
template&lt;class Element&gt;
classType * Foo&lt;classType&gt;::name&lt;Element&gt;(const Element &amp;e)
{
  // Code...
}
}
</code></pre>
<p>Sollte so gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065687</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 26 May 2006 17:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Implemantionsfrage bei Element-Templates on Fri, 26 May 2006 17:30:53 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Sollte so gehen.</p>
</blockquote>
<p>Danke Das habe ich auch schon probiert. Dann erhalte ich den Fehler</p>
<pre><code>Fehler	1	error C2768: 'nsFoo::Foo&lt;classType&gt;::name': Unzulässige Verwendung von expliziten Vorlagenargumenten	foo.h	89
</code></pre>
<p>Aus der Fehlerbeschreibung werde ich nicht schlau...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065696</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Fri, 26 May 2006 17:30:53 GMT</pubDate></item><item><title><![CDATA[Reply to Implemantionsfrage bei Element-Templates on Fri, 26 May 2006 18:10:21 GMT]]></title><description><![CDATA[<p>die fehlerbeschreibung sagt es eigentlich schon: der compiler schreibt eben<br />
nsFoo::Foo&lt;classType&gt;::name<br />
und nicht<br />
nsFoo::Foo&lt;classType&gt;::name&lt;Element&gt;<br />
bei normalen template funktionen wiederholst du die parameter ja auch nicht <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="😉"
    /> - was wozu gehört ergibt sich ja schon durch das doppelte template<br />
folglich</p>
<pre><code class="language-cpp">namespace nsFoo
{

// Implementationsdetails
template&lt;class classType&gt;
template&lt;class Element&gt;
classType * Foo&lt;classType&gt;::name(const Element &amp;e)
{
  // Code...
}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1065727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065727</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 26 May 2006 18:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to Implemantionsfrage bei Element-Templates on Fri, 26 May 2006 18:15:37 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>die fehlerbeschreibung sagt es eigentlich schon: der compiler schreibt eben<br />
nsFoo::Foo&lt;classType&gt;::name<br />
und nicht<br />
nsFoo::Foo&lt;classType&gt;::name&lt;Element&gt;<br />
bei normalen template funktionen wiederholst du die parameter ja auch nicht <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="😉"
    /> - was wozu gehört ergibt sich ja schon durch das doppelte template</p>
</blockquote>
<p>Jo, danke für das Entfernen des Bretts. <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="😉"
    /><br />
Da hätt' man ja auch selber drauf kommen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065735</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Fri, 26 May 2006 18:15:37 GMT</pubDate></item></channel></rss>