<?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[Nich aufgelöstes Symbol bei Templateklasse]]></title><description><![CDATA[<p>Hallo<br />
ich habe noch nicht viel praktische Erfahrung mit Templateklassen und habe versucht eine doppelt verkettete Liste zu schreiben. Jedoch habe ich das Problem das ich nicht aufgelöste externe Symbole bekomme sobald ich Funktionen aufrufe die nicht inline gecoded sind.</p>
<p><strong>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: __thiscall CDList&lt;int&gt;::CDList&lt;int&gt;(void)&quot; (??0?$CDList@H@@QAE@XZ)&quot; in Funktion &quot;_main&quot;.</strong></p>
<p><strong>CDList.hpp</strong></p>
<pre><code class="language-cpp">#pragma once

template &lt;typename T&gt;
class CDList
{
public:
	CDList();
};
</code></pre>
<p><strong>CDList.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;CDList.hpp&quot;

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

int main()
{
	CDList&lt;int&gt; list;

	return 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/256741/nich-aufgelöstes-symbol-bei-templateklasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 04:39:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256741.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Dec 2009 09:38:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nich aufgelöstes Symbol bei Templateklasse on Thu, 17 Dec 2009 09:38:03 GMT]]></title><description><![CDATA[<p>Hallo<br />
ich habe noch nicht viel praktische Erfahrung mit Templateklassen und habe versucht eine doppelt verkettete Liste zu schreiben. Jedoch habe ich das Problem das ich nicht aufgelöste externe Symbole bekomme sobald ich Funktionen aufrufe die nicht inline gecoded sind.</p>
<p><strong>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: __thiscall CDList&lt;int&gt;::CDList&lt;int&gt;(void)&quot; (??0?$CDList@H@@QAE@XZ)&quot; in Funktion &quot;_main&quot;.</strong></p>
<p><strong>CDList.hpp</strong></p>
<pre><code class="language-cpp">#pragma once

template &lt;typename T&gt;
class CDList
{
public:
	CDList();
};
</code></pre>
<p><strong>CDList.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;CDList.hpp&quot;

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

int main()
{
	CDList&lt;int&gt; list;

	return 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1823864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823864</guid><dc:creator><![CDATA[TobiW]]></dc:creator><pubDate>Thu, 17 Dec 2009 09:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Nich aufgelöstes Symbol bei Templateklasse on Thu, 17 Dec 2009 09:59:48 GMT]]></title><description><![CDATA[<p>templates müssen im header implementiert werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823870</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Thu, 17 Dec 2009 09:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Nich aufgelöstes Symbol bei Templateklasse on Thu, 17 Dec 2009 10:36:23 GMT]]></title><description><![CDATA[<p>Heyho,</p>
<p>das Problem ist, dass Templates nicht als Symbol beim Übersetzen exportiert werden können. Der Linker findet bei Deiner <strong>'main.cpp'</strong> die Definition von <strong>CDList</strong> nicht (den eigentlichen Programmcode). Templates müssen sofort instanziiert werden können.</p>
<p>Die Lösung des Problems ist, jeder Übersetzungseinheit <strong>(.cpp)</strong> das komplett ausimplementierte Template mitzugeben. Dazu ist es nötig, den Code direkt in den Header zu schreiben, oder, wie ich sie nenne, &quot;Inline-Files&quot; einzubinden. Die erste Lösung sieht so aus:</p>
<p><strong>CDList.hpp</strong></p>
<pre><code class="language-cpp">#pragma once

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

int main()
{
    CDList&lt;int&gt; list;

    return 1;
}
</code></pre>
<p>Und das war's! Die Datei <strong>CDList.cpp</strong> kannst Du löschen. Der Code steht direkt im Header.</p>
<p>Die zweite Möglichkeit ist es, Deine <strong>.cpp</strong> Datei innerhalb der Headerdatei mit der #include Direktive einzubinden. Programmtechnisch ist es prinzipiell dasselbe wie bei der ersten Lösung, allerdings finde ich die Inline-File-Variante übersichtlicher. Wichtig dabei ist nur, dass Du die <strong>.cpp</strong> auch wie eine Headerdatei behandeln musst, sonst wird sie vom Compiler als Übersetzungseinheit erkannt und das läuft dann wieder schief. Im Regelfall reicht es aus, die Dateiendung in <strong>.inl</strong> oder ähnliches umzubenennen, bzw. die Datei aus dem Compilevorgang rauszunehmen.</p>
<p>Die zweite Lösung würde mit Deinem Code so aussehen:</p>
<p><strong>CDList.hpp</strong></p>
<pre><code class="language-cpp">#pragma once

template &lt;typename T&gt;
class CDList
{
public:
    CDList();
}; 

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

int main()
{
    CDList&lt;int&gt; list;

    return 1;
}
</code></pre>
<p>Hoffe das war alles einleuchtend genug und hilft <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>Gruß<br />
PuerNoctis</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1823880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1823880</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Thu, 17 Dec 2009 10:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Nich aufgelöstes Symbol bei Templateklasse on Thu, 17 Dec 2009 15:32:51 GMT]]></title><description><![CDATA[<p>Achso ok vielen dank <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/1824032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1824032</guid><dc:creator><![CDATA[TobiW]]></dc:creator><pubDate>Thu, 17 Dec 2009 15:32:51 GMT</pubDate></item></channel></rss>