<?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[Templatespezialisierung]]></title><description><![CDATA[<p>Bei folgenden Code bekomme ich beim GCC: <code>error: explicit specialization in non-namespace scope ‘class Screen’</code><br />
Beim VC++ lässt sich der Code fehlerlos kompilieren.</p>
<p>Nun, ich hab gelesen dass das nicht im Standard vorgesehen ist. Aber kennt jemand eine Alternative und die Begründung wieso sowas nicht erlaubt ist?</p>
<pre><code class="language-cpp">class Screen
	{
	public:
		///-----------------------------------
		/// BUTTON
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Button&gt; Get_List&lt;Button&gt; const () { return this-&gt;ButtonList ; }
		///-----------------------------------
		/// LABEL
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Label&gt; Get_List&lt;Label&gt; const () { return this-&gt;LabelList ; }

	private:
		std::list&lt;Button&gt; ButtonList ;
		std::list&lt;Label&gt; LabelList ;
	};
</code></pre>
<p>Wäre dankbar für jede Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261593/templatespezialisierung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 05:33:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261593.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Feb 2010 22:03:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:03:50 GMT]]></title><description><![CDATA[<p>Bei folgenden Code bekomme ich beim GCC: <code>error: explicit specialization in non-namespace scope ‘class Screen’</code><br />
Beim VC++ lässt sich der Code fehlerlos kompilieren.</p>
<p>Nun, ich hab gelesen dass das nicht im Standard vorgesehen ist. Aber kennt jemand eine Alternative und die Begründung wieso sowas nicht erlaubt ist?</p>
<pre><code class="language-cpp">class Screen
	{
	public:
		///-----------------------------------
		/// BUTTON
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Button&gt; Get_List&lt;Button&gt; const () { return this-&gt;ButtonList ; }
		///-----------------------------------
		/// LABEL
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Label&gt; Get_List&lt;Label&gt; const () { return this-&gt;LabelList ; }

	private:
		std::list&lt;Button&gt; ButtonList ;
		std::list&lt;Label&gt; LabelList ;
	};
</code></pre>
<p>Wäre dankbar für jede Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858888</guid><dc:creator><![CDATA[Harald21]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:33:30 GMT]]></title><description><![CDATA[<p>Ich bin mir nicht 100%ig sicher, ich glaube aber das man eigentlich ein richtiges Template braucht zu dem die Spezialisierten gehören.</p>
<p>Also in etwa so</p>
<pre><code class="language-cpp">template&lt;typename T_Type&gt;
std::list&lt;T_Type&gt; Get_List&lt;T_Type&gt; const ();
template&lt;&gt;
std::list&lt;Button&gt; Get_List&lt;Button&gt; const ();
template&lt;&gt;
 std::list&lt;Label&gt; Get_List&lt;Label&gt; const ();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1858898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858898</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:40:59 GMT]]></title><description><![CDATA[<p>Ne, leider <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> noch immer der selbe Fehler.<br />
Mir ist gerade noch aufgefallen, das die '()' falsch stehen... sry <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/1858902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858902</guid><dc:creator><![CDATA[Harald21]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:46:04 GMT]]></title><description><![CDATA[<p>Also ehrlich... schreib doch einfach was die Methoden tun:<br />
GetButtons(), GetLabels()... wo ist das Problem?<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858905</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:46:08 GMT]]></title><description><![CDATA[<p>Was möchtest du genau erreichen? Weshalb nimmst du nicht zwei Funktionen <code>GetButtonList()</code> und <code>GetLabelList()</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858906</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:49:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Was möchtest du genau erreichen? Weshalb nimmst du nicht zwei Funktionen <code>GetButtonList()</code> und <code>GetLabelList()</code> ?</p>
</blockquote>
<p>Nagut, wollte es eigentlich mit Templates machen, aber gut.</p>
<p>Wenn das schon nicht geht, will ich zumindestens wissen wieso nicht. Mit leeren Händen will ich nicht gehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858907</guid><dc:creator><![CDATA[Harald21]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:50:24 GMT]]></title><description><![CDATA[<p>Harald21 schrieb:</p>
<blockquote>
<p>Mir ist gerade noch aufgefallen, das die '()' falsch stehen... sry <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>
</blockquote>
<p>Die Klammern standen schon richtig, nur das const stand falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858908</guid><dc:creator><![CDATA[kackerlacke]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:52:48 GMT]]></title><description><![CDATA[<p>Harald21 schrieb:</p>
<blockquote>
<p>Wenn das schon nicht geht, will ich zumindestens wissen wieso nicht. Mit leeren Händen will ich nicht gehen...</p>
</blockquote>
<p>Es heißt doch schon &quot;Templatespeizialisierung&quot;. Um etwas spezielles zu bekommen muss doch erstmal etwas allgemeineres existieren. Und das tut es bei dir nicht. Macht auch wenig Sinn, denn die allgemeine Templatefuntion könnte nichts tun...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858909</guid><dc:creator><![CDATA[trostpreis]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 22:52:55 GMT]]></title><description><![CDATA[<p>Harald21 schrieb:</p>
<blockquote>
<p>Bei folgenden Code bekomme ich beim GCC: <code>error: explicit specialization in non-namespace scope ‘class Screen’</code><br />
Beim VC++ lässt sich der Code fehlerlos kompilieren.</p>
<p>Nun, ich hab gelesen dass das nicht im Standard vorgesehen ist. Aber kennt jemand eine Alternative und die Begründung wieso sowas nicht erlaubt ist?</p>
<pre><code class="language-cpp">class Screen
	{
	public:
		///-----------------------------------
		/// BUTTON
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Button&gt; Get_List&lt;Button&gt; const () { return this-&gt;ButtonList ; }
		///-----------------------------------
		/// LABEL
		///-----------------------------------
		template&lt;&gt; // &lt;--- Fehler
		std::list&lt;Label&gt; Get_List&lt;Label&gt; const () { return this-&gt;LabelList ; }

	private:
		std::list&lt;Button&gt; ButtonList ;
		std::list&lt;Label&gt; LabelList ;
	};
</code></pre>
<p>Wäre dankbar für jede Hilfe.</p>
</blockquote>
<p>Zunächst einmal wird ein Primärtemplate benötigt. Vermutlich hast du das hier nur der Kürze wegen weggelassen.<br />
Möglich wäre die Definition der Spezialisierungen außerhalb der Klassendefinition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858910</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 20 Feb 2010 22:52:55 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 23:01:44 GMT]]></title><description><![CDATA[<p>Harald21 schrieb:</p>
<blockquote>
<p>Nagut, wollte es eigentlich mit Templates machen, aber gut.</p>
</blockquote>
<p>Du willst es mit Templates machen, nur um Templates verwendet zu haben? Sprachmittel setzt man normalerweise ein, wenn sie sinnvoll sind. Und das trifft auf Templates in diesem Kontext nicht zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858913</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 20 Feb 2010 23:01:44 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 23:12:02 GMT]]></title><description><![CDATA[<p>Hmm stimmt. Dann habe ich mal was dazu gelernt.</p>
<p>Danke für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858917</guid><dc:creator><![CDATA[Harald21]]></dc:creator><pubDate>Sat, 20 Feb 2010 23:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Templatespezialisierung on Sat, 20 Feb 2010 23:46:25 GMT]]></title><description><![CDATA[<p>Ob es sinnvoll ist, hängt davon ab, wie das ganze nachher benutzt werden soll, auch wenn ich schon etwas fantasieren muss, um mir einen use case auszudenken, in dem einfache Methoden nicht ausreichten. Etwa könnten andere Vorlagen existieren, die etwas bestimmtes mit allen Unterkomponenten eines bestimmten Typs tun.</p>
<p>Wie dem auch sei, das ganze ginge etwa so:</p>
<pre><code class="language-cpp">class A {
public:
  A(int x, double d) : x(x), d(d) { }

  template&lt;typename T&gt; T get();

private:
  int x;
  double d;
};

template&lt;&gt; int    A::get&lt;int   &gt;() { return x; }
template&lt;&gt; double A::get&lt;double&gt;() { return d; }
</code></pre>
<p>...wobei dann der Aufruf mit einem nicht implementierten Typ einen Linkerfehler hervorruft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858924</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 20 Feb 2010 23:46:25 GMT</pubDate></item></channel></rss>