<?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, welcher Typ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Stack Klasse und eine Summen-Funktion, beides templates. Leider komme ich nun mit den Typ-Bezeichnern (allgemeint T) durcheinander :xmas1:</p>
<pre><code class="language-cpp">//Stack Klasse
template&lt;typename T&gt;
class MyStack
{
 private:
     struct Node{
           T value;
           Node *next; //nur ein Zeiger auf Node
     };
 public:
     Node* p; //Zeiger auf Top-Node/Anker
     class Iterator{
      public:
             Node* element; //Zeiger auf Node

             T operator*() {return element-&gt;value;}
             Iterator &amp; operator ++(int)
             {element=element.next;  return *this;}
             };
    Iterator begin(){Iterator beg; beg.element = p; return beg;}
    Iterator end(){Iterator e = NULL; return e;}
};

//Summen Funktion
template&lt;typename T&gt;
void summe(T* first)
{
T summe = 0;

for(T* p=first; p != 0; ++p)
summe += *p;
</code></pre>
<p>Der Typ in summe müsste der gleiche Typ wie vom Stack sein, oder?</p>
<p>Bin mir unsicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279200/template-welcher-typ</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 18:12:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279200.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Dec 2010 20:58:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template, welcher Typ? on Mon, 20 Dec 2010 20:58:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Stack Klasse und eine Summen-Funktion, beides templates. Leider komme ich nun mit den Typ-Bezeichnern (allgemeint T) durcheinander :xmas1:</p>
<pre><code class="language-cpp">//Stack Klasse
template&lt;typename T&gt;
class MyStack
{
 private:
     struct Node{
           T value;
           Node *next; //nur ein Zeiger auf Node
     };
 public:
     Node* p; //Zeiger auf Top-Node/Anker
     class Iterator{
      public:
             Node* element; //Zeiger auf Node

             T operator*() {return element-&gt;value;}
             Iterator &amp; operator ++(int)
             {element=element.next;  return *this;}
             };
    Iterator begin(){Iterator beg; beg.element = p; return beg;}
    Iterator end(){Iterator e = NULL; return e;}
};

//Summen Funktion
template&lt;typename T&gt;
void summe(T* first)
{
T summe = 0;

for(T* p=first; p != 0; ++p)
summe += *p;
</code></pre>
<p>Der Typ in summe müsste der gleiche Typ wie vom Stack sein, oder?</p>
<p>Bin mir unsicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997399</guid><dc:creator><![CDATA[elex]]></dc:creator><pubDate>Mon, 20 Dec 2010 20:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Template, welcher Typ? on Mon, 20 Dec 2010 21:04:00 GMT]]></title><description><![CDATA[<p>Der Templateparameter ist lokal für die darauf folgende Deklaration. Daher besteht keinerlei Zusammenhang zwischen dem T in summe und dem T in MyStack. Du kannst ja mal die Zeile 25 ändern zu:<br />
<code>template&lt;typename ballaballapingpong&gt;</code><br />
Daraufhin wirst du allerlei Fehler bekommen an den Stellen wo T in summe auftaucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997400</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 20 Dec 2010 21:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Template, welcher Typ? on Mon, 20 Dec 2010 21:41:29 GMT]]></title><description><![CDATA[<p>Hi Sepp,</p>
<p>danke für deine Antwort. Ich habe das Problem vielleicht nicht deutlich gemacht.<br />
Wenn ich in main() ein Exemplar z.B. vom Typ MyStack&lt;int&gt; A definiere und im Verlauf die Summe aller Listenelemente benötige, dann rufe ich summe&lt;int&gt;(A.begin()) oder summe&lt;Iterator&gt;(A.begin()) oder auf?<br />
Auf der einen Seite brauche ich Iterator p zum durchlaufen der Liste, auf der anderen Seite muss die lokale Variable summe den gleichen typ wie die Variable value in Struct Node haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997408</guid><dc:creator><![CDATA[elex]]></dc:creator><pubDate>Mon, 20 Dec 2010 21:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template, welcher Typ? on Mon, 20 Dec 2010 22:14:44 GMT]]></title><description><![CDATA[<p>Dein Iterator-Konzept ist nicht ganz stimmig. Erst sieht es so aus, als ob Du etwas STL-kompatibles bauen willst, aber Deiner summiere-Funktion übergibst Du nur einen einzigen Iterator, und dann auch noch einen, der nichts mit Deinem List-Iterator zu tun haben kann; denn Deine summiere-Funktion bekommt ja nur einen einfachen Zeiger.</p>
<p>Du darfst auch ruhig zwei Template-Parameter für deine Familie von summiere-Funktionen verwenden:</p>
<pre><code class="language-cpp">template&lt;class T, class Iter&gt;
T summiere(Iter von, Iter bis);

...

List&lt;int&gt; lst;
...
int summe = summiere&lt;int&gt;(lst.begin(),lst.end());
</code></pre>
<p>...zumindest für den Anfang...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997417</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 20 Dec 2010 22:14:44 GMT</pubDate></item></channel></rss>