<?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[[SOLVED] Template Trennung Header&#x2F;Source]]></title><description><![CDATA[<p>angenommen, ich habe in einem Header folgende Template Klasse definiert:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Auto {
public:
    hierganzvieleunwichtigeAttributeinabhängigkeitvon T;

    fahreTemplateAuto(); // nur deklaration, nicht definition!
};
</code></pre>
<p>jetzt meine Frage:<br />
Was ist die Syntax, um dann in der .cpp-implementierung die Methode fahreTemplateAuto() zu <strong>definieren</strong>?<br />
Muss ich dort auch nochmal template&lt;class T&gt; dazuschreiben? wie muss ich das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217019/solved-template-trennung-header-source</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 00:41:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217019.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Jul 2008 06:45:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [SOLVED] Template Trennung Header&#x2F;Source on Wed, 02 Jul 2008 07:24:58 GMT]]></title><description><![CDATA[<p>angenommen, ich habe in einem Header folgende Template Klasse definiert:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Auto {
public:
    hierganzvieleunwichtigeAttributeinabhängigkeitvon T;

    fahreTemplateAuto(); // nur deklaration, nicht definition!
};
</code></pre>
<p>jetzt meine Frage:<br />
Was ist die Syntax, um dann in der .cpp-implementierung die Methode fahreTemplateAuto() zu <strong>definieren</strong>?<br />
Muss ich dort auch nochmal template&lt;class T&gt; dazuschreiben? wie muss ich das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539437</guid><dc:creator><![CDATA[Heinzelotto]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to [SOLVED] Template Trennung Header&#x2F;Source on Wed, 02 Jul 2008 07:00:00 GMT]]></title><description><![CDATA[<p>Was benutzt Du für ein Kompiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539442</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to [SOLVED] Template Trennung Header&#x2F;Source on Wed, 02 Jul 2008 07:07:32 GMT]]></title><description><![CDATA[<p>eigentlich gibt es noch keine vernünftige möglichkeit das hinzubekommen</p>
<p>ich mache es immer so :</p>
<p>die cpp mit include guards ausstatten,</p>
<p>dann in der cpp</p>
<pre><code class="language-cpp">template &lt;class T&gt;
auto&lt;T&gt;::fahreTemplateAuto()
{
}
</code></pre>
<p>in in der hpp, die cpp includieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539448</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to [SOLVED] Template Trennung Header&#x2F;Source on Wed, 02 Jul 2008 07:15:02 GMT]]></title><description><![CDATA[<p>Heinzelotto schrieb:</p>
<blockquote>
<p>jetzt meine Frage:<br />
Was ist die Syntax, um dann in der .cpp-implementierung die Methode fahreTemplateAuto() zu <strong>definieren</strong>?<br />
Muss ich dort auch nochmal template&lt;class T&gt; dazuschreiben? wie muss ich das machen?</p>
</blockquote>
<p>1. Funktioniert die Trennung Header/Source bei Templates nicht so wie du es von anderen Klassen gewohnt bist. Du kannts bei Templates nur einen der folgenden Ansätze wählen:<br />
a) Dein Compiler gehört zu denen die das export-Schlüsselwort für Templates unterstützen (Dies ist derzeit wohl bei 2 der Fall, mir ist aber selbst nur der Comeau Compiler bekannt).<br />
b) Du trennst wie gewohnt, inkludierts am Ende des Headers aber den Source! (Bitte dann die Ändung auch nicht cpp nennen, sondern besser tmpl oder ähnliches).<br />
c) [Standardweg] Du machst alles in einen Header.</p>
<p>2. Wie man die Definition schreiben muss, wenn man sie nicht inline definiert:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Auto {
public:
    hierganzvieleunwichtigeAttributeinabhängigkeitvon T;

    void fahreTemplateAuto(); // nur deklaration, nicht definition!
};

template&lt;class T&gt;
void Auto&lt;T&gt;::fahreTemplateAuto()
{
}
</code></pre>
<p>cu André<br />
P.S: Rückgabewerte haben Methoden/Funktionen weiterhin... (Ein Compiler der default-int annimmt hält sich nicht an den Standard)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539450</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to [SOLVED] Template Trennung Header&#x2F;Source on Wed, 02 Jul 2008 07:24:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;class T&gt;
void Auto&lt;T&gt;::fahreTemplateAuto()
{
}
</code></pre>
<p>so hatte ich es tatsächlich auch gemacht, aber da ich weder &quot;extern&quot; verwendet, noch die .cpp datei im header inkludiert habe, hat es zwar kompiliert, die methode in der klasse war aber immernoch undefiniert.</p>
<p>Vielen Dank für eure Antworten, ich werde jetzt aber mal schauen, ob ich vielleicht der Einfachheit halber doch alles in den Header schreiben kann, wenn es zu viel werden sollte, werde ich eine der beschriebenen Möglichkeiten benutzen.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539457</guid><dc:creator><![CDATA[Heinzelotto]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:24:27 GMT</pubDate></item></channel></rss>