<?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[Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot;]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein kleines Problem mit einer extern definierten Klasse welche Templates nutzt. Ich verwende VC7, hier mal die Quelltexte:</p>
<p>klasse.h</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class klasse
{
  void blub(T bla);
};
</code></pre>
<p>klasse.cpp</p>
<pre><code class="language-cpp">#include &quot;klasse.h&quot;

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

int main()
{
  klasse&lt;int&gt; testen;
  testen.blub(1);
  return 0;
}
</code></pre>
<p>Beim Compilieren / Linken kommt dann der folenden Fehler:</p>
<blockquote>
<p>&quot;error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: void __thiscall klasse&lt;int&gt;::blub(int)&quot; (?blub@?$klasse@H@@QAEXH@Z)', verwiesen in Funktion '_main'&quot;</p>
</blockquote>
<p>Ich kann den Fehler einfach nicht finden, im Prinzip ist ja nicht viel dran an dem Code, dass macht mich aber nur noch verrückter <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="😕"
    />.<br />
Ich wäre seeeeeeeehr dankbar für eure Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/135580/externe-klasse-mit-templates-gt-quot-nicht-aufgelöstest-externes-symbol-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 11:33:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135580.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Feb 2006 23:27:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Thu, 02 Feb 2006 23:27:50 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein kleines Problem mit einer extern definierten Klasse welche Templates nutzt. Ich verwende VC7, hier mal die Quelltexte:</p>
<p>klasse.h</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class klasse
{
  void blub(T bla);
};
</code></pre>
<p>klasse.cpp</p>
<pre><code class="language-cpp">#include &quot;klasse.h&quot;

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

int main()
{
  klasse&lt;int&gt; testen;
  testen.blub(1);
  return 0;
}
</code></pre>
<p>Beim Compilieren / Linken kommt dann der folenden Fehler:</p>
<blockquote>
<p>&quot;error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: void __thiscall klasse&lt;int&gt;::blub(int)&quot; (?blub@?$klasse@H@@QAEXH@Z)', verwiesen in Funktion '_main'&quot;</p>
</blockquote>
<p>Ich kann den Fehler einfach nicht finden, im Prinzip ist ja nicht viel dran an dem Code, dass macht mich aber nur noch verrückter <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="😕"
    />.<br />
Ich wäre seeeeeeeehr dankbar für eure Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984643</guid><dc:creator><![CDATA[Typ]]></dc:creator><pubDate>Thu, 02 Feb 2006 23:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Thu, 02 Feb 2006 23:34:29 GMT]]></title><description><![CDATA[<p>Nabend,</p>
<p>du kannst Template-Code nicht auf diese Art und Weise teilen. Template-Code wird<br />
dort instanziiert, wo er auftritt. Der Compiler schaut sich die Header an und<br />
erstellt eine entsprechende Klasse von einem Typ T. Das wars fuer den Compiler<br />
auch schon. Wenn du nun linkst, wird der Linker feststellen, dass er keine<br />
Definition des Codes finden kann und liefert dir die entsprechende Fehlermeldung.</p>
<p>Du hast nun zwei Moeglichkeiten:</p>
<ol>
<li>Du schreibst den Code mit in die Headerdatei</li>
<li>Du schreibst den Code in eine .cpp-Datei (oder wie auch immer du die nennen<br />
willst) und includierst diese an das Ende deiner Headerdatei.</li>
</ol>
<p>mfg<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984645</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Thu, 02 Feb 2006 23:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Fri, 03 Feb 2006 00:04:46 GMT]]></title><description><![CDATA[<p>1000 Dank für die Antwort, ich hatte den Code schon als Notlösung in den Header getan, aber das gefällt mir irgendwie garnicht ;), na was solls, wenns nicht anders geht...</p>
<p>Aber wie funktioniert das eigentlich bei den Standard Librarys, z.B. bei vector, hier werden doch auch Templates genutzt und der Code wird doch wohl nicht in den Header Dateien stehen, oder <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/984648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984648</guid><dc:creator><![CDATA[Typ]]></dc:creator><pubDate>Fri, 03 Feb 2006 00:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Fri, 03 Feb 2006 06:51:29 GMT]]></title><description><![CDATA[<p>Na dann schau doch einfach mal in die Header. Dort findest Du tatsächlich die komplette Definition.</p>
<p>Tommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984686</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 03 Feb 2006 06:51:29 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Mon, 06 Mar 2006 07:28:40 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab grad den Thread hier gefunden, weil ich ein ähnliches Problem hab. Allerdings nicht mit Templates. Von daher weiß ich nicht genau, inwieweit die Antworten auf mein Problem zutreffen.</p>
<p>Folgendes: Ich muss im Rahmen eines Beleges im Studium ein Telefonbuch programmieren.</p>
<pre><code class="language-cpp">/*Telefonbuchhead.h*/
class person { … };

class buch {
private:
   person **p;
   unsigned int anz;

public:
   buch();                         //Defaultkonstruktor belegt Member mit 0
   ~buch();

   //Methoden
   …

};

/*Telefonbuchfunc.cpp*/
#include „Telefonbuchhead.h“
…

buch::buch(): p(0), anz(0ul){}       //Defaultkonstruktor
buch::~buch(){…}                    //Destruktor
</code></pre>
<p>Wenn ich den Destruktor, in der Klasse und damit in der Headerdatei definiere, funktioniert alles. Definiere ich dagegen den Destruktor in der .cpp Datei tritt folgender Fehler auf:</p>
<p>Telefonbuch error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: __thiscall buch::~buch(void)&quot; (??1buch@@QAE@XZ)', verwiesen in Funktion '&quot;public: void * __thiscall buch::`scalar deleting destructor'(unsigned int)&quot; (??_Gbuch@@QAEPAXI@Z)'</p>
<p>Wieso muss der Destruktor in diesem Fall in der .h definiert sein, bzw. wie kann ich den Fehler beseitigen und den Destruktor in der .cpp Datei definieren?</p>
<p>Danke für die Antwort im Vorab!</p>
<p>mfg<br />
Rodi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009321</guid><dc:creator><![CDATA[Rodi]]></dc:creator><pubDate>Mon, 06 Mar 2006 07:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Sun, 05 Mar 2006 22:25:38 GMT]]></title><description><![CDATA[<p>An sich stimmt alles - vielleicht wird einfach die .cpp-Datei nicht mitkompiliert?</p>
<p>PS: Es gibt hier auch einen C++-Code Highlighter <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/1009334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009334</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sun, 05 Mar 2006 22:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to Externe Klasse mit Templates -&amp;gt; &amp;quot;Nicht aufgelöstest Externes Symbol&amp;quot; on Mon, 06 Mar 2006 07:26:26 GMT]]></title><description><![CDATA[<p>Doch, die .cpp Datei wird mitkompiliert, denn da habe ich ja noch eine ganze Menge anderen Code drin, der funktionier.</p>
<p>Den c++ code Highlighter hab ich zuspät gesehen, war auch mein erster Beitrag hier im Forum! Aber ich editiers nochmal.</p>
<p>Rodi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009402</guid><dc:creator><![CDATA[Rodi]]></dc:creator><pubDate>Mon, 06 Mar 2006 07:26:26 GMT</pubDate></item></channel></rss>