<?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[Templatefunktionen in Templateklassen]]></title><description><![CDATA[<p>Hallo und gleich einen schönen Montag Morgen :),</p>
<p>seit geschlagenen zwei Stunden suche ich nach der passenden Syntax, kann sie aber nicht finden und mir gehen die Googlebegriffe aus. Inzwischen bin ich bei der &quot;probiere einfach einmal alles aus&quot;-Methode angekommen.</p>
<p>Könnt ihr vielleicht einmal hierauf einen Blick werfen und mir sagen wie man dieses am besten löst:</p>
<p>Grundsätzlich habe ich die Klasse A</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{
    //Wie wird hier die Funktion deklariert?
}
</code></pre>
<p>Und für diese Klasse möchte ich nun eine Funktion foo schreiben die zwei Parameter von Typ A entgegen nimmt. Könnt ihr mir sagen wie dieses möglich ist bzw. ob es möglich ist?</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
void A&lt;i,c&gt;::foo(/* und hier weiß ich nicht wie es weiter geht*/)
</code></pre>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248378/templatefunktionen-in-templateklassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 02:34:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248378.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Aug 2009 07:32:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 07:32:14 GMT]]></title><description><![CDATA[<p>Hallo und gleich einen schönen Montag Morgen :),</p>
<p>seit geschlagenen zwei Stunden suche ich nach der passenden Syntax, kann sie aber nicht finden und mir gehen die Googlebegriffe aus. Inzwischen bin ich bei der &quot;probiere einfach einmal alles aus&quot;-Methode angekommen.</p>
<p>Könnt ihr vielleicht einmal hierauf einen Blick werfen und mir sagen wie man dieses am besten löst:</p>
<p>Grundsätzlich habe ich die Klasse A</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{
    //Wie wird hier die Funktion deklariert?
}
</code></pre>
<p>Und für diese Klasse möchte ich nun eine Funktion foo schreiben die zwei Parameter von Typ A entgegen nimmt. Könnt ihr mir sagen wie dieses möglich ist bzw. ob es möglich ist?</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
void A&lt;i,c&gt;::foo(/* und hier weiß ich nicht wie es weiter geht*/)
</code></pre>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765613</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Mon, 24 Aug 2009 07:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 07:43:38 GMT]]></title><description><![CDATA[<p>MrMilk schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{
    //Wie wird hier die Funktion deklariert?
}
</code></pre>
</blockquote>
<p>Ganz einfach:</p>
<pre><code class="language-cpp">template &lt;int i, class c&gt;
class A
{
  void foo(); 
  //oder mit Argumentliste: 
  void bar(int myI, std::string mystring);
}; //Semikolon nicht vergessen!

template &lt;int i, class c&gt;
void A&lt;i,c&gt;::foo() 
{
  /* ... */
}

template &lt;int i, class c&gt;
void A&lt;i,c&gt;::bar(int myI, std::string mystring) 
{
  /* ... */
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1765623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765623</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 24 Aug 2009 07:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 07:48:42 GMT]]></title><description><![CDATA[<p>Hallo pumuckl,</p>
<p>oh, ich glaube da hab ich mich nicht ganz so gut ausgedrückt. Die Funktion foo soll zwei Argumente von Typ A entgegen nimmt. Also der Klasse selber.</p>
<p>Hast du dafür auch eine Idee?</p>
<p>Viele Grüße<br />
MM <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/1765626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765626</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Mon, 24 Aug 2009 07:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 08:13:07 GMT]]></title><description><![CDATA[<p>A ist aber kein Typ sondern ein Klassen-Template. Trotzdem lässt sich innerhalb der Klasse &quot;A&quot; wie &quot;A&lt;i,c&gt;&quot; benutzen. Beispiel:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class foo {
public:
  int  operator-(foo const&amp; rhs);
  //             ^^^
  //            foo&lt;T&gt;

  bool dings(foo&lt;int&gt; const&amp; xxx);
};

template&lt;typename T&gt;
int foo&lt;T&gt;::operator-(foo const&amp; rhs) {
  //                  ^^^
  //                 foo&lt;T&gt;
  return 23;
}

template&lt;typename T&gt;
bool foo&lt;T&gt;::dings(foo&lt;int&gt; const&amp; xxx) {
  return false;
}
</code></pre>
<p>Außerdem heißt es offiziell &quot;class template&quot; und &quot;function template&quot;, wortlich übersetzt: &quot;Klassen-Schablone&quot; und &quot;Funktions-Schablone&quot;. &quot;template class&quot; (Schablonenklasse) kann missverstanden werden. Meint man damit die ganze Familie von Klassen oder nur eine &quot;Spezialisierung&quot;?</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765637</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 24 Aug 2009 08:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 08:46:28 GMT]]></title><description><![CDATA[<p>Hallo SP,</p>
<p>ohhh du möchtest mich ärgern, oder?</p>
<p>Viele grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765658</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Mon, 24 Aug 2009 08:46:28 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 09:02:22 GMT]]></title><description><![CDATA[<p>MrMilk schrieb:</p>
<blockquote>
<p>ohhh du möchtest mich ärgern, oder?</p>
</blockquote>
<p>Denke nicht, dass er das möchte. Was bringt dich auf den Gedanken? Ich denke er möchte vor allem klarmachen, dass man sich gerade bei solchen Feinheiten korrekt ausdrücken muss um nicht missverstanden zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765671</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 24 Aug 2009 09:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 10:17:49 GMT]]></title><description><![CDATA[<p>Aber wieso mit einem neuen Beispiel?</p>
<p>Okay, Ich probiere es besser zu erklären.</p>
<p>Ich habe ein Klassen Template A und dieses sieht wie folgt aus:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
class A
{

}
</code></pre>
<p>Nun möchte ich eine Funktion foo hinzufügen, welche zwei Parameter hat und zwei Argumente von dem Klassen Template A entgegen nehmen. Wichtig für mich ist, dass die Template Parameter nicht gleich sein müssen.</p>
<p>sprich</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
void A&lt;i,c&gt;::foo(A&lt;i,c&gt; lhs, A&lt;i,c&gt; rhs)
{
}
</code></pre>
<p>möcht ich nicht habe, da dort immer i und c identisch sind.</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    class c
&gt;
void A&lt;i,c&gt;::foo(A&lt;i1,c1&gt; lhs, A&lt;i2,c2&gt; rhs)
{
}
</code></pre>
<p>So etwas möchte ich haben. Ist ungefähr klar, auf was ich abziele?</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765708</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Mon, 24 Aug 2009 10:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 10:23:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;int i, class c&gt;
class A
{
    template&lt;int i1, int i2, class c1, class c2&gt;
    void foo(A&lt;i1, c1&gt; lhs, A&lt;i2, c2&gt; rhs);
};

template&lt;int i, class c&gt;
template&lt;int i1, int i2, class c1, class c2&gt;
void A&lt;i, c&gt;::foo(A&lt;i1, c1&gt; lhs, A&lt;i2, c2&gt; rhs){}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1765711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765711</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Mon, 24 Aug 2009 10:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 10:25:10 GMT]]></title><description><![CDATA[<p>Dann sind die Methoden wieder templates, und zwar mit den parametern der argumente als parameter (okay, klingt jetzt wirr...):</p>
<pre><code class="language-cpp">template &lt;int i, class c&gt;
class A
{
  template&lt;int i1, class c1, int i2, class c2&gt;
  void foo(A&lt;i1,c1&gt; lhs, A&lt;i2,c2&gt; rhs);
};

template &lt;int i, class c&gt;
template &lt;int i1, class c1, int i2, class c2&gt;
void A&lt;i, c&gt;::foo(A&lt;i1,c1&gt; lhs, A&lt;i2,c2&gt; rhs)
{
  /*...*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1765712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765712</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 24 Aug 2009 10:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 10:30:01 GMT]]></title><description><![CDATA[<p>Hallo MrMilk,</p>
<p>so wie ich deinen ersten Beitrag verstanden habe, möchtest du eine Funktion haben, welche selber wiederum Parameter vom Typ A&lt;c, i&gt; hat:</p>
<pre><code class="language-cpp">template&lt;int i, typename c&gt;
void A&lt;i,c&gt;::foo(A&lt;i,c&gt; a1, A&lt;i,c&gt; a2)
{
  // ...
}
</code></pre>
<p>Wenn du jedoch möchtest, daß die Parameter auch noch unterschiedlich (bezogen auf die Template-Parameter) sind, so benötigst du Element-Templates:</p>
<pre><code class="language-cpp">template
&lt;
    int i,
    typename c // ich benutze lieber typename statt class -)
&gt;
template&lt;int i1, typename c1, int i2, typename c2&gt;
void A&lt;i,c&gt;::foo(A&lt;i1,c1&gt; lhs, A&lt;i2,c2&gt; rhs)
{
}
</code></pre>
<p>Edit: meine zweite Vermutung war also richtig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765717</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 24 Aug 2009 10:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 11:26:38 GMT]]></title><description><![CDATA[<p>MrMilk schrieb:</p>
<blockquote>
<p>ohhh du möchtest mich ärgern, oder?</p>
</blockquote>
<p><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="🙄"
    /><br />
Eigentlich nicht. Ich war im Glauben, Deine Frage beantwortet zu haben. Ich habe Dich zumindest auf die Feinheiten der Terminologie aufmerksam gemacht.</p>
<p>MrMilk schrieb:</p>
<blockquote>
<p>Nun möchte ich eine Funktion foo hinzufügen, welche zwei Parameter hat und zwei Argumente von dem Klassen Template A entgegen nehmen.</p>
</blockquote>
<p>Man kann einer Funktion kein &quot;Klassen Template&quot; übergeben!</p>
<p>MrMilk schrieb:</p>
<blockquote>
<p>Wichtig für mich ist, dass die Template Parameter nicht gleich sein müssen.</p>
</blockquote>
<p>Aha! Du meinst also, die Funktion soll zwei <em>Objekte</em> beliebiger <em>Spezialisierungen</em> des <em>Klassentemplates</em> A entgegennehmen. Dann sag das auch!</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765752</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 24 Aug 2009 11:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 11:28:53 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>MrMilk schrieb:</p>
<blockquote>
<p>Wichtig für mich ist, dass die Template Parameter nicht gleich sein müssen.</p>
</blockquote>
<p>Aha! Du meinst also, die Funktion soll zwei <em>Objekte</em> beliebiger <em>Spezialisierungen</em> des <em>Klassentemplates</em> A entgegennehmen. Dann sag das auch!</p>
</blockquote>
<p>Genau das meinte ich mit dem Korrekten Ausdrücken bei den gewissen Feinheiten <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765753</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 24 Aug 2009 11:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to Templatefunktionen in Templateklassen on Mon, 24 Aug 2009 12:37:01 GMT]]></title><description><![CDATA[<p>Vielen für die Hilfe an alle <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="🙂"
    /><br />
Es klappt <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>
<p>Wieder etwas neues gelernt.</p>
<p>Viel Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1765790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1765790</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Mon, 24 Aug 2009 12:37:01 GMT</pubDate></item></channel></rss>