<?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[Funktionstemplate eines spezialisierten Klassentemplates]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Problem. Ich habe ein Klassentemplate welches widerum funktionstemplates besitzt.</p>
<p>Nun habe ich eine Spezialisierung dieses KTs. Jetzt schreit jedoch der Compiler C2244 bei den Funktionstemplateimplementierungen.</p>
<p>Klassentemplate:</p>
<pre><code>template &lt; typename FILE &gt;
	class FileDataHandler
	{
	private:
		FILE*	m_file;
	public:
		FileDataHandler(FILE* file) : m_file(file){}		
		template &lt;typename T&gt; bool write_value	(const T* source_value);
	};

	template &lt;typename FILE&gt; template &lt; typename T &gt;
	bool FileDataHandler&lt;FILE&gt;::write_value( const T* source_value )
	{
		return true;
	}
</code></pre>
<p>Spezialisiert:</p>
<pre><code>template &lt;&gt;
	class FileDataHandler&lt;MyFileType&gt;
	{
	private:
		MyFileType*	m_file;	
	public:
		FileDataHandler(MyFileType* file) : m_file(file) {}
		template &lt;typename T&gt; bool write_value	(const T* source_value);
	};

	template &lt;&gt; template &lt; typename T &gt;
	bool FileDataHandler&lt;MyFileType&gt;::write_value( const T* source_value )//C2244??
	{
		return true;
	}
</code></pre>
<p>Der Compilerfehler ist folgender:</p>
<pre><code>error C2244: 'FileDataHandler&lt;MyFileType&gt;::write_value': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
          Definition
          'bool FileDataHandler&lt;MyFileType&gt;::write_value(const T *)'
          Vorhandene Deklarationen
          'bool FileDataHandler&lt;MyFileType&gt;::write_value(const T *)'
</code></pre>
<p>Die definition ist gleich der vorhandenen und dann eben doch nicht (ist das vllt schon die Lösung?).</p>
<p>Ich vermute natürlich dass es an der Spezialisierung liegt, aber warum verstehe ich noch nicht ganz.<br />
Was ist das genaue Problem und wie kann ich es lösen?</p>
<p>Vielen Dank für Hilfe<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327467/funktionstemplate-eines-spezialisierten-klassentemplates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 16:54:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327467.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Aug 2014 14:34:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionstemplate eines spezialisierten Klassentemplates on Wed, 13 Aug 2014 14:39:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Problem. Ich habe ein Klassentemplate welches widerum funktionstemplates besitzt.</p>
<p>Nun habe ich eine Spezialisierung dieses KTs. Jetzt schreit jedoch der Compiler C2244 bei den Funktionstemplateimplementierungen.</p>
<p>Klassentemplate:</p>
<pre><code>template &lt; typename FILE &gt;
	class FileDataHandler
	{
	private:
		FILE*	m_file;
	public:
		FileDataHandler(FILE* file) : m_file(file){}		
		template &lt;typename T&gt; bool write_value	(const T* source_value);
	};

	template &lt;typename FILE&gt; template &lt; typename T &gt;
	bool FileDataHandler&lt;FILE&gt;::write_value( const T* source_value )
	{
		return true;
	}
</code></pre>
<p>Spezialisiert:</p>
<pre><code>template &lt;&gt;
	class FileDataHandler&lt;MyFileType&gt;
	{
	private:
		MyFileType*	m_file;	
	public:
		FileDataHandler(MyFileType* file) : m_file(file) {}
		template &lt;typename T&gt; bool write_value	(const T* source_value);
	};

	template &lt;&gt; template &lt; typename T &gt;
	bool FileDataHandler&lt;MyFileType&gt;::write_value( const T* source_value )//C2244??
	{
		return true;
	}
</code></pre>
<p>Der Compilerfehler ist folgender:</p>
<pre><code>error C2244: 'FileDataHandler&lt;MyFileType&gt;::write_value': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
          Definition
          'bool FileDataHandler&lt;MyFileType&gt;::write_value(const T *)'
          Vorhandene Deklarationen
          'bool FileDataHandler&lt;MyFileType&gt;::write_value(const T *)'
</code></pre>
<p>Die definition ist gleich der vorhandenen und dann eben doch nicht (ist das vllt schon die Lösung?).</p>
<p>Ich vermute natürlich dass es an der Spezialisierung liegt, aber warum verstehe ich noch nicht ganz.<br />
Was ist das genaue Problem und wie kann ich es lösen?</p>
<p>Vielen Dank für Hilfe<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413277</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate eines spezialisierten Klassentemplates on Wed, 13 Aug 2014 14:54:48 GMT]]></title><description><![CDATA[<p>Was ist mit &quot;template &lt;&gt;&quot; einfach weglassen?</p>
<pre><code class="language-cpp">template &lt;&gt; template &lt; typename T &gt;
    bool FileDataHandler&lt;MyFileType&gt;::write_value( const T* source_value )//C2244??
    {
        return true;
    }
</code></pre>
<p>-&gt;</p>
<pre><code class="language-cpp">template &lt; typename T &gt;
    bool FileDataHandler&lt;MyFileType&gt;::write_value( const T* source_value )//C2244??
    {
        return true;
    }
</code></pre>
<p>Ansonsten würde ich solche Methoden gleich inline schreiben, gibt keinen grossen Mehrwert, die Definition separat zur Deklaration zu halten. Bei so kleinen Methoden wird es sogar unübersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413283</guid><dc:creator><![CDATA[untemplate]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate eines spezialisierten Klassentemplates on Wed, 13 Aug 2014 18:07:01 GMT]]></title><description><![CDATA[<p>oh man ich...<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />..danke sehr!! <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/2413310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413310</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Wed, 13 Aug 2014 18:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate eines spezialisierten Klassentemplates on Wed, 13 Aug 2014 20:12:56 GMT]]></title><description><![CDATA[<p>Nochmal der Standard dazu:</p>
<p>14.7.3/5 schrieb:</p>
<blockquote>
<p>Members of an explicitly specialized class template are defined in the same manner as members of normal classes, and not using the <code>template&lt;&gt;</code> syntax.<br />
The same is true when defining a member of an explicitly specialized member class. However, <code>template&lt;&gt;</code> is used in defining a member of an explicitly specialized member class template that is specialized as a class template.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2413346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413346</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 13 Aug 2014 20:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionstemplate eines spezialisierten Klassentemplates on Thu, 14 Aug 2014 10:31:59 GMT]]></title><description><![CDATA[<p>Vielen Dank Arcoth!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413436</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Thu, 14 Aug 2014 10:31:59 GMT</pubDate></item></channel></rss>