<?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 in argumentlist eines templates]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht genau wie ich ein template in der argumentliste eines template definieren muss.</p>
<p>Hier der Beispielcode:</p>
<pre><code class="language-cpp">template&lt; class T, class T_Data, class T_List = std::vector&lt;T&gt;, class T_Array = std::vector&lt;T_List&gt; &gt;
	class TestData
	{
	[...]
	};

template &lt; class TestType , class TestData &gt; //&lt;-- wie wird TestData argument hier korrekt definiert?
	class TestKlasse
	{
[...]
};
</code></pre>
<p>Wie wird es denn richtig gemacht? Ich dachte TestData als template argument für TestKlasse benötigt ebenfalls die Definition seiner eigenen templateargumente aber das funktioniert irgendwie nicht. Also frage ich lieber gleich nach wie es richtig sein muss.</p>
<p>Vielen Dank iV<br />
Sam</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266533/template-in-argumentlist-eines-templates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 07:14:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266533.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 May 2010 14:27:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 14:27:17 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht genau wie ich ein template in der argumentliste eines template definieren muss.</p>
<p>Hier der Beispielcode:</p>
<pre><code class="language-cpp">template&lt; class T, class T_Data, class T_List = std::vector&lt;T&gt;, class T_Array = std::vector&lt;T_List&gt; &gt;
	class TestData
	{
	[...]
	};

template &lt; class TestType , class TestData &gt; //&lt;-- wie wird TestData argument hier korrekt definiert?
	class TestKlasse
	{
[...]
};
</code></pre>
<p>Wie wird es denn richtig gemacht? Ich dachte TestData als template argument für TestKlasse benötigt ebenfalls die Definition seiner eigenen templateargumente aber das funktioniert irgendwie nicht. Also frage ich lieber gleich nach wie es richtig sein muss.</p>
<p>Vielen Dank iV<br />
Sam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895168</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Mon, 10 May 2010 14:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 14:34:59 GMT]]></title><description><![CDATA[<p>Katachi schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich weiß nicht genau wie ich ein template in der argumentliste eines template definieren muss.</p>
<p>Hier der Beispielcode:</p>
<pre><code class="language-cpp">template&lt; class T, class T_Data, class T_List = std::vector&lt;T&gt;, class T_Array = std::vector&lt;T_List&gt; &gt;
	class TestData
	{
	[...]
	};

template &lt; class TestType , class TestData &gt; //&lt;-- wie wird TestData argument hier korrekt definiert?
	class TestKlasse
	{
[...]
};
</code></pre>
<p>Wie wird es denn richtig gemacht? Ich dachte TestData als template argument für TestKlasse benötigt ebenfalls die Definition seiner eigenen templateargumente aber das funktioniert irgendwie nicht. Also frage ich lieber gleich nach wie es richtig sein muss.</p>
<p>Vielen Dank iV<br />
Sam</p>
</blockquote>
<p>Wir können dir nicht sagen wie du es richtig machen musst, weil du nicht gesagt hast was du willst. Du hast hier den Bezeichner TestData für zwei völlig verschiedene Zwecke benutzt. Zum einen als Name für das Klassentemplate, zum Anderen als Parametername für das andere Klassentemplate - die beiden Namen haben aber nicht mit einander zu tun.<br />
Was willst du erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895175</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 10 May 2010 14:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 14:38:55 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Wir können dir nicht sagen wie du es richtig machen musst, weil du nicht gesagt hast was du willst. Du hast hier den Bezeichner TestData für zwei völlig verschiedene Zwecke benutzt. Zum einen als Name für das Klassentemplate, zum Anderen als Parametername für das andere Klassentemplate - die beiden Namen haben aber nicht mit einander zu tun.<br />
Was willst du erreichen?</p>
</blockquote>
<p>Die TestKlasse soll eine teilspezialisierte Templateklasse sein. Die Templateargumente von TestKlasse sollen TestType und explizit die zuvor definierte Templateklasse TestData sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895182</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Mon, 10 May 2010 14:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 14:47:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt; class TestType &gt; 
class TestKlasse&lt;TestType, TestData&lt;bla, blubb, foo, bar&gt; &gt;//&lt;-- partielle Spezialsierung
    {
[...]
};
</code></pre>
<p>natürlich muss das TestKlasse-Template dazu vorher zumindest irgendwo zumindest deklariert sein (oder als nichtspezialisiertes template definiert:</p>
<pre><code class="language-cpp">template &lt;class TestType, class DataType&gt;
class TestKlasse /* { optionale definition } */ ;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1895186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895186</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 10 May 2010 14:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 14:59:32 GMT]]></title><description><![CDATA[<p>Ah jetzt verstehe ich. Ich glaube ich habe da ein bisl was durcheinandergebracht.<br />
Werd ich gleich mal ausprobieren. thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895199</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Mon, 10 May 2010 14:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 15:19:00 GMT]]></title><description><![CDATA[<p>ok, es hilft doch noch nicht ganz weiter. Kann ich auch in der Spezialisierung die</p>
<p>TestData&lt;bla,blubb,foo,bar&gt;</p>
<p>definition irgendwie undefiniert lassen? Ich möchte TestData als argument noch immer undefiniert lassen.</p>
<p>Sprich à la</p>
<p>template TestData&lt;T,T1,T2,T3&gt;</p>
<p>ich habe jetzt i.ü. die TestKlasse undefiniert gelassen und eine seiner funktionen soll jetzt spezialisiert sein. Die soll jedoch jegliche Definition von TestData annehmen können.</p>
<pre><code class="language-cpp">template &lt; class ThreadType , class ThreadData &gt;
	class TestKlasse
	{
		void	Init(const ThreadData&amp; newdata);
	};

	template &lt; class ThreadType , class ThreadData &gt;
	void TestKlasse&lt; ThreadType,ThreadData &gt;::Init(const ThreadData&amp; newdata);
//Und jetzt die spezialisierte Funktion wobei TestData trotzdem als template undefiniert sein soll..geht das überhaupt? 
	template &lt; class ThreadType &gt;
	void TestKlasse&lt; ThreadType, template TestData&lt;class T, class T2&gt;&gt; &gt;::Init(const ThreadData&amp; newdata)
	{}
</code></pre>
<p>Ob das so valid ist weiß ich nicht, aber genau das benötige ich. Macht das sinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895205</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Mon, 10 May 2010 15:19:00 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 16:16:26 GMT]]></title><description><![CDATA[<p>Exakt so wie du das willst, fällt mir kein Weg ein. Aber man kann Templates als Template-Parameter haben:</p>
<pre><code class="language-cpp">template &lt; class T1, class T2, class T3, class T4 &gt;
class TestData
{
};

template &lt; class T1 , template&lt;class,class,class,class&gt; class T2 &gt;
class TestKlasse  {
};

TestKlasse&lt;int,TestData &gt; foo;   // Geht!

TestKlasse&lt;int,int &gt; bar;        // Geht nicht!
</code></pre>
<p>Das geht dann aber mit jedem vierparametrigen Template, nicht nur mit TestData.</p>
<p>Etwas ausführlicher wird das beispielsweise hier erklärt:<br />
<a href="http://www.informit.com/articles/article.aspx?p=376878" rel="nofollow">http://www.informit.com/articles/article.aspx?p=376878</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895240</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 10 May 2010 16:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to template in argumentlist eines templates on Mon, 10 May 2010 16:21:02 GMT]]></title><description><![CDATA[<p>Danke SeppJ. Das ist ganz genau das was ich gesucht habe! Danke auch für den Link.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895242</guid><dc:creator><![CDATA[Katachi]]></dc:creator><pubDate>Mon, 10 May 2010 16:21:02 GMT</pubDate></item></channel></rss>