<?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-Klasse - Verständnisproblem]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>mein Professor hat letztens den unterstehenden Quelltext an die Leinwand geworfen. Allerdings verstehe ich nicht wie die Template-Klassen ineinander arbeiten... Könnt ihr mir weiterhelfen?<br />
Vielen Dank</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

template &lt;int n&gt; struct Z{
	enum{s = n + Z&lt;n-1&gt;::s};
};

template &lt;&gt; struct Z&lt;1&gt;{
	enum {s=1};
};

void main(void){
	cout &lt;&lt; Z&lt;5&gt;::s &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/302903/template-klasse-verständnisproblem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 01:02:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302903.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Apr 2012 12:55:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 12:55:51 GMT]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>mein Professor hat letztens den unterstehenden Quelltext an die Leinwand geworfen. Allerdings verstehe ich nicht wie die Template-Klassen ineinander arbeiten... Könnt ihr mir weiterhelfen?<br />
Vielen Dank</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

template &lt;int n&gt; struct Z{
	enum{s = n + Z&lt;n-1&gt;::s};
};

template &lt;&gt; struct Z&lt;1&gt;{
	enum {s=1};
};

void main(void){
	cout &lt;&lt; Z&lt;5&gt;::s &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2206945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206945</guid><dc:creator><![CDATA[hardy24]]></dc:creator><pubDate>Mon, 30 Apr 2012 12:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 13:03:29 GMT]]></title><description><![CDATA[<p>Es handelt sich nicht um eine Template-Klasse, sondern um eine Klassen-Template bzw. Klassenvorlage. Es ist erstaunlich, wie oft man darauf hinweisen muss; scheinbar lehrt niemand das richtig.</p>
<p>Also, Z ist eine Klassenvorlage, Z&lt;5&gt; eine aus ihr konkretisierte Klasse. Z&lt;5&gt; bezieht sich in ihrer Definition auf Z&lt;4&gt; (in Form von Z&lt;n-1&gt;), Z&lt;4&gt; auf Z&lt;3&gt; und so weiter, bis Z&lt;1&gt; erreicht wird, für die eine besondere Spezialisierung existiert, die statt der allgemeinen Form benutzt wird (damit endet die Rekursion). Dies sind alles verschiedene (!) Klassen, die sich wie alle anderen Klassen gegenseitig verwenden können und den gleichen Regeln unterliegen.</p>
<p>Übrigens ist</p>
<pre><code class="language-cpp">void main(void)
</code></pre>
<p>nicht standardkonform; main <strong>muss</strong> int zurückgeben. Garantiert ist im Standard, dass</p>
<pre><code class="language-cpp">int main();
int main(int argc, char *argv[]);
</code></pre>
<p>und äquivalente Formen funktionieren; alles andere ist mehr oder weniger Glückssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206946</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Mon, 30 Apr 2012 13:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 13:05:59 GMT]]></title><description><![CDATA[<p>Stichwort Rekursion: Z&lt;5&gt; nutzt Z&lt;n-1&gt;, also Z&lt;4&gt;. Z&lt;4&gt; nutze Z&lt;3&gt;, ..., Z&lt;2&gt; nutzt Z&lt;1&gt;, Z&lt;1&gt; nutzt HALT STOPP! Z&lt;1&gt; ist spezialisiert, Z&lt;1&gt; nutzt gar kein anderes Z. Und das ist auch gut so, wenn die Rekursion ewig weitergehen würde, wie sollte dann jemals etwas herauskommen. Und nun geht's wieder rückwärts: Bei Z&lt;1&gt; ist einfach s=1. Z&lt;2&gt;::s ist daher 2 + Z&lt;1&gt;::s = 2 + 1 = 3. Z&lt;3&gt;::s ist daher 3 + Z&lt;2&gt; = 3 + 3 = 6, usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206947</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 30 Apr 2012 13:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 13:25:15 GMT]]></title><description><![CDATA[<p>dankeschön für die erklärungen, das hat mich weitergebracht <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/2206952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206952</guid><dc:creator><![CDATA[hardy24]]></dc:creator><pubDate>Mon, 30 Apr 2012 13:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 13:52:16 GMT]]></title><description><![CDATA[<p>C++ Templates werden oft an der Uni ale Beispiel genommen, weil sie an sich eine Turing Complete Progirammiersprache sind ( Das ist auch mathematisch bewiesen ).</p>
<p>Diese &quot;Template Programme&quot; wie in deinem Beispiel werden nicht zur Laufzeit, sonder zur Kompilierungszeit ausgeführt - man missbraucht den C++ Compiler zu einem Intepreter.</p>
<p>In der Praxis werden in dieser Art und Weise Templates selten verwendet, aber aus theoretischer Sicht ist dieses Nebeneffekt natürlich sehr interessant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206956</guid><dc:creator><![CDATA[devdimi2]]></dc:creator><pubDate>Mon, 30 Apr 2012 13:52:16 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klasse - Verständnisproblem on Mon, 30 Apr 2012 22:19:10 GMT]]></title><description><![CDATA[<p>Hasenschablone oder Schablonenhase?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2207075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2207075</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 30 Apr 2012 22:19:10 GMT</pubDate></item></channel></rss>