<?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 Templates - Linkerfehler]]></title><description><![CDATA[<p>Hallo c-plus-plus.de-Mitglieder,</p>
<p>ich habe ein Problem mit meinen C++-Klassentemplates.</p>
<p>Ich versuche in Unmanaged C++ eine Art Liste wie es sie in dem .NET Framework gibt nachzubauen. Dabei tritt leider ein komischer Linkerfehler auf, den ich mir nicht erklären kann:</p>
<blockquote>
<p>Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: void __thiscall List&lt;class TestClass&gt;::Add(class TestClass)&quot; (?Add@?List@VTestClass@@@@QAEXVTestClass@@@Z)" in Funktion "\_main". main.obj GenericList  
Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: \_\_thiscall List<class TestClass>::List<class TestClass>(void)" (??0?List@VTestClass@@@@QAE@XZ)&quot; in Funktion &quot;_main&quot;. main.obj GenericList</p>
</blockquote>
<p>Und darauf der folgefehler:</p>
<blockquote>
<p>Fehler 3 fatal error LNK1120: 2 nicht aufgelöste externe Verweise. D:\Projekte\C++\GenericList\Debug\GenericList.exe GenericList</p>
</blockquote>
<p>Hier mein Code dazu:<br />
List.cpp:</p>
<pre><code class="language-cpp">// Generische Liste
// Copyright (C) by ****** ****** 2009
//

#include &lt;stdio.h&gt;
#include &quot;List.h&quot;

template&lt;class T&gt;
List&lt;T&gt;::List(void)
{

}

template&lt;class T&gt;
void List&lt;T&gt;::Add(T item)
{

}

template&lt;class T&gt;
T List&lt;T&gt;::operator[](int index)
{

}
</code></pre>
<p>List.h:</p>
<pre><code class="language-cpp">// Generische Liste
// Copyright (C) by ****** ****** 2009
//

#pragma once

template&lt;class T&gt; 
class List
{
public:
	// Constructor
	List(void);

	// Functions
	void Add(T item);

	// Operators
	T operator[](int index);

private:
	T* items;
	int itemCount;
};
</code></pre>
<p>Und main.cpp:</p>
<pre><code class="language-cpp">// Listentest
//

#include &lt;stdio.h&gt;
#include &quot;TestClass.h&quot;
#include &quot;List.h&quot;

int main(int argc, char** argv)
{
	List&lt;TestClass&gt; list;
	TestClass test1;
	test1.PrintMessage(&quot;Hallo&quot;);
	list.Add(test1);

	return 0;
}
</code></pre>
<p>'TestClass' ist eine simple Klasse die einen String ausgibt und den zuletzt ausgegeben speichert.</p>
<p>Ich habe schon bei Google und in der MSDN gesucht, konnte aber keinen Fehler finden. <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>
<p>Achja, nochwas: Mein Compiler ist der aus Visual Studio 2008 Professional.</p>
<p>Vielleicht sieht ja jemand den Fehler, meine C/C++ Kenntnisse sind noch anfängerig <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.<br />
markus111</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247861/problem-mit-templates-linkerfehler</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 08:02:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247861.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Aug 2009 19:31:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 19:31:49 GMT]]></title><description><![CDATA[<p>Hallo c-plus-plus.de-Mitglieder,</p>
<p>ich habe ein Problem mit meinen C++-Klassentemplates.</p>
<p>Ich versuche in Unmanaged C++ eine Art Liste wie es sie in dem .NET Framework gibt nachzubauen. Dabei tritt leider ein komischer Linkerfehler auf, den ich mir nicht erklären kann:</p>
<blockquote>
<p>Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: void __thiscall List&lt;class TestClass&gt;::Add(class TestClass)&quot; (?Add@?List@VTestClass@@@@QAEXVTestClass@@@Z)" in Funktion "\_main". main.obj GenericList  
Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: \_\_thiscall List<class TestClass>::List<class TestClass>(void)" (??0?List@VTestClass@@@@QAE@XZ)&quot; in Funktion &quot;_main&quot;. main.obj GenericList</p>
</blockquote>
<p>Und darauf der folgefehler:</p>
<blockquote>
<p>Fehler 3 fatal error LNK1120: 2 nicht aufgelöste externe Verweise. D:\Projekte\C++\GenericList\Debug\GenericList.exe GenericList</p>
</blockquote>
<p>Hier mein Code dazu:<br />
List.cpp:</p>
<pre><code class="language-cpp">// Generische Liste
// Copyright (C) by ****** ****** 2009
//

#include &lt;stdio.h&gt;
#include &quot;List.h&quot;

template&lt;class T&gt;
List&lt;T&gt;::List(void)
{

}

template&lt;class T&gt;
void List&lt;T&gt;::Add(T item)
{

}

template&lt;class T&gt;
T List&lt;T&gt;::operator[](int index)
{

}
</code></pre>
<p>List.h:</p>
<pre><code class="language-cpp">// Generische Liste
// Copyright (C) by ****** ****** 2009
//

#pragma once

template&lt;class T&gt; 
class List
{
public:
	// Constructor
	List(void);

	// Functions
	void Add(T item);

	// Operators
	T operator[](int index);

private:
	T* items;
	int itemCount;
};
</code></pre>
<p>Und main.cpp:</p>
<pre><code class="language-cpp">// Listentest
//

#include &lt;stdio.h&gt;
#include &quot;TestClass.h&quot;
#include &quot;List.h&quot;

int main(int argc, char** argv)
{
	List&lt;TestClass&gt; list;
	TestClass test1;
	test1.PrintMessage(&quot;Hallo&quot;);
	list.Add(test1);

	return 0;
}
</code></pre>
<p>'TestClass' ist eine simple Klasse die einen String ausgibt und den zuletzt ausgegeben speichert.</p>
<p>Ich habe schon bei Google und in der MSDN gesucht, konnte aber keinen Fehler finden. <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>
<p>Achja, nochwas: Mein Compiler ist der aus Visual Studio 2008 Professional.</p>
<p>Vielleicht sieht ja jemand den Fehler, meine C/C++ Kenntnisse sind noch anfängerig <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.<br />
markus111</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761910</guid><dc:creator><![CDATA[cmarkus111]]></dc:creator><pubDate>Sun, 16 Aug 2009 19:31:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 19:43:10 GMT]]></title><description><![CDATA[<p><code>templates</code> kannst du mit dem MSVC nicht in .cpp's definieren.</p>
<p>Dafür gäbe es das Schlüsselwort export, was von VC nicht unterstützt wird. <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>Also alles in den Header packen.</p>
<p>btw.<br />
Wenn du schon C Header benutzt, dann richtig:</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;
</code></pre>
<p>Ist das richtige pendant in C++ zu stdio.h.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761912</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 16 Aug 2009 19:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 19:43:16 GMT]]></title><description><![CDATA[<p>Alle Template-Definitionen müssen mit in die .h-Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761913</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sun, 16 Aug 2009 19:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 19:55:57 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p><code>templates</code> kannst du mit dem MSVC nicht in .cpp's definieren.</p>
<p>Dafür gäbe es das Schlüsselwort export, was von VC nicht unterstützt wird. <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>Also alles in den Header packen.</p>
<p>btw.<br />
Wenn du schon C Header benutzt, dann richtig:</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;
</code></pre>
<p>Ist das richtige pendant in C++ zu stdio.h.</p>
</blockquote>
<p>Ok, der Fehler ist weg <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="🙂"
    /> Aber wenn ich alles in der Headerdatei definiere, kann ich keine Funktionen wie memset und printf aufrufen!?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Ich habe den Header cstdio auch eingebunden.<br />
Oder mach ich da was falsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ?</p>
<p>mfg.<br />
markus111</p>
<p>PS: Sorry, hatte vergessen das ich mich schonmal registriert hatte :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761920</guid><dc:creator><![CDATA[markus111]]></dc:creator><pubDate>Sun, 16 Aug 2009 19:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 20:09:01 GMT]]></title><description><![CDATA[<p>markus111 schrieb:</p>
<blockquote>
<p>Aber wenn ich alles in der Headerdatei definiere, kann ich keine Funktionen wie memset und printf aufrufen!?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Ich habe den Header cstdio auch eingebunden.<br />
Oder mach ich da was falsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ?</p>
</blockquote>
<p>Scheint so, kannst du diesbezüglich etwas konkreter werden? Wie sieht dein Code aus, welche Fehlermeldungen hast du wo erhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761928</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 16 Aug 2009 20:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Sun, 16 Aug 2009 20:12:43 GMT]]></title><description><![CDATA[<p>Er hat wahrscheinlich auch aus stdlib.h cstdlib u.s.w. gemacht. Die Funktionen, liegen dann alle im std:: Namensraum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761929</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 16 Aug 2009 20:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Mon, 17 Aug 2009 20:32:42 GMT]]></title><description><![CDATA[<p>Hier mal mein Code:</p>
<pre><code class="language-cpp">// Generische Liste
// Copyright (C) by ****** ****** 2009
//

#pragma once

#include &lt;cstdio&gt;

template&lt;class T&gt; 
class List
{
public:
	// Constructor
	List(void)
	{

	}

	// Functions
	void Add(T item)
	{
		int i = 0;
		memset(&amp;i, 0, sizeof(int));
		printf(i);
	}

	// Operators
	T operator[](int index)
	{

	}

private:
	T* items;
	int itemCount;
};
</code></pre>
<p>fehler:</p>
<blockquote>
<p>Fehler 1 error C3861: &quot;memset&quot;: Bezeichner wurde nicht gefunden. d:\projekte\c++\genericlist\genericlist\list.h 25 GenericList</p>
</blockquote>
<p>vllt ist meine verwendung der methoden etwas daneben, es geht nur darum das es funzt.</p>
<p>mfg.<br />
markus111</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762582</guid><dc:creator><![CDATA[markus111]]></dc:creator><pubDate>Mon, 17 Aug 2009 20:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Mon, 17 Aug 2009 20:34:25 GMT]]></title><description><![CDATA[<p>hat sich ganz plötzlich erledigt, jetzt gehts....</p>
<p>mfg.<br />
markus111</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762585</guid><dc:creator><![CDATA[markus111]]></dc:creator><pubDate>Mon, 17 Aug 2009 20:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Mon, 17 Aug 2009 20:34:36 GMT]]></title><description><![CDATA[<p>entweder, Du schreibst am Anfang ein mal &quot;using namespace ::std;&quot; (nicht empfohlen), oder Du schreibst &quot;std::memset&quot;...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762586</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Mon, 17 Aug 2009 20:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Mon, 17 Aug 2009 20:38:38 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>entweder, Du schreibst am Anfang ein mal &quot;using namespace ::std;&quot;</p>
</blockquote>
<p>auf keinen fall im header!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762589</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 17 Aug 2009 20:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates - Linkerfehler on Tue, 18 Aug 2009 13:40:07 GMT]]></title><description><![CDATA[<p>Und hier ein gutes Beispiel für die Begründung:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-247906.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-247906.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762899</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:40:07 GMT</pubDate></item></channel></rss>