<?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[Problem mit Template: undefined reference]]></title><description><![CDATA[<p>Ich wollte gerade eine Template-Klasse schreiben, aber schon gibt es ein Problem. Mein Beispielprogramm sieht folgendermaßen aus:</p>
<p>Klasse.h:</p>
<pre><code class="language-cpp">#ifndef KLASSE_H
#define KLASSE_H

template&lt;class T&gt;
class Klasse
{
public:

	Klasse ();
};

#endif
</code></pre>
<p>Klasse.cpp:</p>
<pre><code class="language-cpp">#include &quot;Klasse.h&quot;

template&lt;class T&gt;
Klasse&lt;T&gt;::Klasse ()
{
}
</code></pre>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;Klasse.h&quot;

int main ()
{
	Klasse&lt;int&gt; objekt;
}
</code></pre>
<p>Kompilert wird folgendermaßen:</p>
<pre><code>g++ -o Test main.cpp Klasse.cpp
</code></pre>
<p>Und es erscheint der Fehler:</p>
<blockquote>
<p>main.cpp: undefined reference to `Klasse&lt;int&gt;::Klasse()'</p>
</blockquote>
<p>Wenn ich alles in eine Datei schreibe, funktioniert es. Aber so ist es ja nicht gedacht, denn bei normalen Klassen lagert man die Funktionen ja auch aus. Was mache ich also falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179251/problem-mit-template-undefined-reference</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 02:58:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179251.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Apr 2007 18:47:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 18:48:15 GMT]]></title><description><![CDATA[<p>Ich wollte gerade eine Template-Klasse schreiben, aber schon gibt es ein Problem. Mein Beispielprogramm sieht folgendermaßen aus:</p>
<p>Klasse.h:</p>
<pre><code class="language-cpp">#ifndef KLASSE_H
#define KLASSE_H

template&lt;class T&gt;
class Klasse
{
public:

	Klasse ();
};

#endif
</code></pre>
<p>Klasse.cpp:</p>
<pre><code class="language-cpp">#include &quot;Klasse.h&quot;

template&lt;class T&gt;
Klasse&lt;T&gt;::Klasse ()
{
}
</code></pre>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;Klasse.h&quot;

int main ()
{
	Klasse&lt;int&gt; objekt;
}
</code></pre>
<p>Kompilert wird folgendermaßen:</p>
<pre><code>g++ -o Test main.cpp Klasse.cpp
</code></pre>
<p>Und es erscheint der Fehler:</p>
<blockquote>
<p>main.cpp: undefined reference to `Klasse&lt;int&gt;::Klasse()'</p>
</blockquote>
<p>Wenn ich alles in eine Datei schreibe, funktioniert es. Aber so ist es ja nicht gedacht, denn bei normalen Klassen lagert man die Funktionen ja auch aus. Was mache ich also falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269525</guid><dc:creator><![CDATA[NES-Spieler]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 18:53:23 GMT]]></title><description><![CDATA[<p>Die haben das mit den Templates verkackt bzw. der Grund liegt in der etwas komplizierteren C++-Welt.</p>
<p>Fakt ist: Du musst Templateklassen in der Header-Datei vollständig implementieren und kannst nichts in eine Source-Datei auslagern.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269535</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 19 Apr 2007 18:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 19:01:51 GMT]]></title><description><![CDATA[<p>Das ist ja voll für'n Arsch. Ich kann doch nicht den gesamten Quellcode in die Header-Datei packen. Wie sieht denn das aus?<br />
Was macht man da eigentlich, wenn man seinen Quellcode zum Beispiel nicht veröffentlichen will, sondern der Nutzer nur eine Header- und eine Lib-Datei haben soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269545</guid><dc:creator><![CDATA[NES-Spieler]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:01:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 19:05:09 GMT]]></title><description><![CDATA[<p>Dann machst du es wie die dummen Dinkumware-Implementierer und gibst allen deinen Variablen möglichst kryptische Namen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Nein, du hast da keine Chance. Als einziger Compiler unterstützt Comeau ein export, wobei das afair auch nicht des Rätsels wirkliche Lösung ist...</p>
<p>Aber siehs doch positiv, Header/Source-Aufteilung ist doch sowieso sowas von out heutzutage und nur noch bei altmodischen Sprachen der Fall *g*</p>
<p>Add: Eine richtig schöne Interface/Implementation-Trennung ist das ja sowieso nie gewesen. Ich mein, wenn der Benutzer schon die in der Klasse verwendeten Variablen sehen kann er auch sehr leicht auf die Implementierung schließen...</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269546</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:05:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 19:03:50 GMT]]></title><description><![CDATA[<p>Kann man so sehen. Andererseits ist ein Template keine Klasse. Verschiedene Dinge verhalten sich gelegentlich auch verschieden. So auch hier:</p>
<p>SideWinder schrieb:</p>
<blockquote>
<p>Die haben das mit den Templates verkackt bzw. der Grund liegt in der etwas komplizierteren C++-Welt.</p>
<p>Fakt ist: Du musst Templateklassen in der Header-Datei vollständig implementieren und kannst nichts in eine Source-Datei auslagern.</p>
<p>MfG SideWinder</p>
</blockquote>
<p>Denn es ist gerade das <em>Klassentemplate</em> und nicht die <em>Templateklasse</em>, dessen Definition sichtbar sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269548</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Template: undefined reference on Thu, 19 Apr 2007 19:08:01 GMT]]></title><description><![CDATA[<p>Der Unterschied ist:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class MyClass
...

und

typedef MyClass&lt;int&gt; MyClassInt;
</code></pre>
<p>? Wenn ja, gut, schön, ändert aber nichts daran, dass das Konzept Mist ist <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>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269560</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:08:01 GMT</pubDate></item></channel></rss>