<?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[Templatzes&#x5C;Argumente&#x5C;Argumentname]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Leider kann ich meine Frage n ausführlicher formulieren aber:</p>
<p>Was bringt es mir, den Typnamen festzulegen?</p>
<p>ich verstehe das Prinzip und die Anwendung von Templates aber was mich durcheinanderbringt, ist, dass man den internen Typen-vars namen geben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160861/templatzes-argumente-argumentname</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 17:29:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160861.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Sep 2006 10:19:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Sat, 30 Sep 2006 10:19:56 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Leider kann ich meine Frage n ausführlicher formulieren aber:</p>
<p>Was bringt es mir, den Typnamen festzulegen?</p>
<p>ich verstehe das Prinzip und die Anwendung von Templates aber was mich durcheinanderbringt, ist, dass man den internen Typen-vars namen geben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146920</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sat, 30 Sep 2006 10:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Sat, 30 Sep 2006 11:44:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>(ich weiß nicht genau, ob ich Dich richtig verstanden habe, aber versuche es mal)<br />
Man gibt den Typen (oder daraus abgeleiteten) Namen, damit man einfach von außerhalb darauf referenzieren kann.<br />
Wenn Du schonmal vector&lt;int&gt;::const_iterator o.ä. verwendet hats, wirst Du froh gewesen sein, nicht den tatsächlich dahinter stehenden Ausdruck verwenden zu müssen. <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 />
Außerdem gibt es einem eine gewisse Flexibilität mehr..stell' es Dir einfach als eine weitere Indirektion vor.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146953</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 30 Sep 2006 11:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Sat, 30 Sep 2006 14:07:27 GMT]]></title><description><![CDATA[<p>Ich glaube du meinst vielleicht das hier:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void sinn(const T&amp; obj)
{
   typename T::iterator it;
   ...
}
</code></pre>
<p>Den Template-Typeparameter muss du nicht unbdingt mit typename defnieren, da kann genauso gut class stehen.</p>
<p>Aber in der Funktion musst du das typename schreiben, weil iterator ein Typ ist.<br />
Stell dir mal vor du würdest sowas schreiben.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void sinn(const T&amp; obj)
{
   T::iterator *it;
   ...
}
</code></pre>
<p>Was siehst du ?? Einen Zeiger auf einen Iterator, aber woher soll der der Compiler wissen. Er könnte genauso gut annehmen das T::iterator eine statische Variable ist ( in der Regel geht er von Anfang an davon aus das es sicht nicht um einen Typen handelt) und it könnte ne globabale Variable sein.</p>
<p>Dann würde ja da eine Multiplikation stehen <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 />
Deswegen das typename davor ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147022</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Sep 2006 14:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Sun, 01 Oct 2006 09:15:56 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Antworten, aber was ich meine ist hmmm es is schwer zu erklären weil mir auch keine Alternative einfällt.</p>
<p>Also ich meine diese Zeile</p>
<p>Template &lt;typename T&gt; wieso kann ich hier soviele bezeichner haben für einen Typ?</p>
<p>wieso is (nur bsp) nicht einfach type oder ein anderes Schlüsselwort/ein anderer Bezeichner da? Es wird doch nicht ohne Grund sein, dass ich hier frei wählen kann oder?</p>
<p>Sry wenn das ne blöde Frage is, beschäftigt mich aba wirklich</p>
<p>EDIT: ist es deswegen damit man unbeschränkt viele Arten von Typen anführen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147292</guid><dc:creator><![CDATA[muhi]]></dc:creator><pubDate>Sun, 01 Oct 2006 09:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Sun, 01 Oct 2006 11:27:15 GMT]]></title><description><![CDATA[<p>Verstehe nicht genau was du meinst ...<br />
Gib mal Beispiel-Codes an, wo was so ist und nicht so oder so ähnlich ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147339</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 01 Oct 2006 11:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Templatzes&#x5C;Argumente&#x5C;Argumentname on Mon, 02 Oct 2006 08:32:36 GMT]]></title><description><![CDATA[<p>Hi muhi,</p>
<p>sorry, wenn das jetzt hart klingt, aber ich habe den Eindruck, dass Du den Sinn von templates noch nicht verstanden hast (falls doch, darfst Du gerne mein Post hier abbrechen).</p>
<p>templates sind dafür da, Dinge, die man für unterschiedliche Typen machen möchte, nur einmal definieren zu müssen. Da man bei der implementierung des templates aber trotzdem hier und da den Typen benennen muß, führt man eben einen entsprechenden Bezeichner ein, der hier nicht eine Variable, sondern einen Typen bezeichnet (also nicht &quot;laenge&quot;, sondern &quot;int&quot;).<br />
Minibeispiel: Ich brauche (warum auch immer) eine Art &quot;doppelter Addition&quot; für integer und strings. Eigentlich brauche ich dafür zwei Methoden:</p>
<pre><code class="language-cpp">int doppeltAddieren(const int&amp; a, const int&amp; b) {
    int ergebnis = a + b + b;
    return ergebnis;
}

std::string doppeltAddieren(const std::string&amp; a, const std::string&amp; b) {
    std::string ergebnis = a + b + b;
    return ergebnis;
}
</code></pre>
<p>... und wenn ich das nochmal für doubles brauche, schreibe ich das nochmal und für jeden anderen Typen jeweils nochmal.<br />
Mit template schreibe ich dagegen <em>nur einmal</em>:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
T doppeltAddieren(const T&amp; a, const T&amp; b) {
    T ergebnis = a + b + b;
    return ergebnis;
}
</code></pre>
<p>... und bin fertig für alle Typen (die einen operator+() haben) !<br />
Syntaktisch muß ich aber den Typ benennen (für den Rückgabetypen und die lokale Variable) ... also brauche ich dafür einen Namen und dafür nehme ich eben &quot;T&quot; (könnte auch &quot;Simon2&quot;, &quot;muhi&quot; oder irgendetwas Anderes nehmen).</p>
<p>Syntaktisch braucht man das &quot;typename&quot;, weil man templates auch mit konkreten Typen (z.B. int) definieren kann:</p>
<pre><code class="language-cpp">template &lt;typename T, int V&gt;
T doppeltAddieren(const T&amp; a, const T&amp; b) {
    T ergebnis = a + b + V;
    return ergebnis;
}
</code></pre>
<p>(ist allerdings etwas seltener zu gebrauchen).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147766</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 02 Oct 2006 08:32:36 GMT</pubDate></item></channel></rss>