<?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[Klassentemplates: Porbleme bei externer Funktionsdefinition]]></title><description><![CDATA[<p>Ich habe folgendes Problem. Ich habe eine Templateklasse, welche in der Datei bsp.h definiert wird und deren Konstruktor aber in der Datei bsp2.c definiert ist. Wenn ich jetzt zuerst bsp2.c kompiliere und dann die Datei mit der main-Methode, dann kommt eine Fehlermeldung. Im Detail sieht mein Code so aus:</p>
<p>Die Datei bsp.h:<br />
<strong>#ifndef ITERATE_H<br />
#define ITERATE_H<br />
template &lt;typename MESH, typename PARAM&gt; class spline{<br />
public:<br />
int n;<br />
spline(int n_in);<br />
};<br />
#endif</strong></p>
<p>Die Datei bsp2.c:<br />
<strong>#include &quot;bsp.h&quot;<br />
#include &lt;stdio.h&gt;<br />
template &lt;typename MESH, typename PARAM&gt; spline &lt;MESH,PARAM&gt;::spline(int n_in){<br />
n = n_in;<br />
printf(&quot;n = %d&quot;, n);<br />
}</strong></p>
<p>Die Datei bsp.c:<br />
**#include &quot;bsp.h&quot;</p>
<p>int main( int argc, char <em>argv[] )<br />
{<br />
int n=3;<br />
spline &lt;int,int&gt; itera (n);<br />
}</em>*</p>
<p>Ich kompiliere nun zuerst bsp2.c:<br />
<strong>g++ bsp2.c -c -o bsp2.o</strong><br />
Das klappt auch wunderbar!</p>
<p>Beim Compilieren &amp; Linken von bsp.c<br />
<strong>g++ bsp.c -o bsp bsp2.o</strong><br />
kommt nun aber folgende Fehlermeldung<br />
<strong>/tmp/ccqrkRTj.o: In function <code>main': bsp.cpp:(.text+0x1e): undefined reference to</code>spline&lt;int, int&gt;::spline(int)'<br />
collect2: ld returned 1 exit status</strong></p>
<p>Interessanterweise ist folgendes anzumerken:</p>
<ol>
<li>Falls ich die Klasse nicht als Template defineire (was in diesem Besipiel eh nicht benötigt wird), dann funktioniert alles.</li>
<li>Falls ich den Inhalt der drei Dateien in eine Datei reinscheibe, dann funktioniert es ebenfalls</li>
</ol>
<p>Habt ihr eine Idee woran das liegen könnte? Vielen Dank schonmal!&amp;;[e]</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207432/klassentemplates-porbleme-bei-externer-funktionsdefinition</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 05:04:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207432.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Mar 2008 14:34:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassentemplates: Porbleme bei externer Funktionsdefinition on Fri, 07 Mar 2008 14:36:37 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Problem. Ich habe eine Templateklasse, welche in der Datei bsp.h definiert wird und deren Konstruktor aber in der Datei bsp2.c definiert ist. Wenn ich jetzt zuerst bsp2.c kompiliere und dann die Datei mit der main-Methode, dann kommt eine Fehlermeldung. Im Detail sieht mein Code so aus:</p>
<p>Die Datei bsp.h:<br />
<strong>#ifndef ITERATE_H<br />
#define ITERATE_H<br />
template &lt;typename MESH, typename PARAM&gt; class spline{<br />
public:<br />
int n;<br />
spline(int n_in);<br />
};<br />
#endif</strong></p>
<p>Die Datei bsp2.c:<br />
<strong>#include &quot;bsp.h&quot;<br />
#include &lt;stdio.h&gt;<br />
template &lt;typename MESH, typename PARAM&gt; spline &lt;MESH,PARAM&gt;::spline(int n_in){<br />
n = n_in;<br />
printf(&quot;n = %d&quot;, n);<br />
}</strong></p>
<p>Die Datei bsp.c:<br />
**#include &quot;bsp.h&quot;</p>
<p>int main( int argc, char <em>argv[] )<br />
{<br />
int n=3;<br />
spline &lt;int,int&gt; itera (n);<br />
}</em>*</p>
<p>Ich kompiliere nun zuerst bsp2.c:<br />
<strong>g++ bsp2.c -c -o bsp2.o</strong><br />
Das klappt auch wunderbar!</p>
<p>Beim Compilieren &amp; Linken von bsp.c<br />
<strong>g++ bsp.c -o bsp bsp2.o</strong><br />
kommt nun aber folgende Fehlermeldung<br />
<strong>/tmp/ccqrkRTj.o: In function <code>main': bsp.cpp:(.text+0x1e): undefined reference to</code>spline&lt;int, int&gt;::spline(int)'<br />
collect2: ld returned 1 exit status</strong></p>
<p>Interessanterweise ist folgendes anzumerken:</p>
<ol>
<li>Falls ich die Klasse nicht als Template defineire (was in diesem Besipiel eh nicht benötigt wird), dann funktioniert alles.</li>
<li>Falls ich den Inhalt der drei Dateien in eine Datei reinscheibe, dann funktioniert es ebenfalls</li>
</ol>
<p>Habt ihr eine Idee woran das liegen könnte? Vielen Dank schonmal!&amp;;[e]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470062</guid><dc:creator><![CDATA[zeusomat]]></dc:creator><pubDate>Fri, 07 Mar 2008 14:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplates: Porbleme bei externer Funktionsdefinition on Fri, 07 Mar 2008 14:44:20 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du must Template-Implementationen die in anderen Übersetzungseinheiten mit eingebunden werden mit in den Header schreiben. Gibt schon 100e Threads dazu.</p>
<p>Und sfds</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470068</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 07 Mar 2008 14:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplates: Porbleme bei externer Funktionsdefinition on Fri, 07 Mar 2008 15:08:41 GMT]]></title><description><![CDATA[<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470084</guid><dc:creator><![CDATA[zeusomat]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:08:41 GMT</pubDate></item></channel></rss>