<?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[uresolved external symbol mit templates in Visual C++]]></title><description><![CDATA[<p>Also, ich programmiere eine template-Klassse in Visual C++ und ich habe drei dateien:</p>
<p>ast.h</p>
<pre><code>template &lt;class T&gt;
class TreeNode
{
public:
	T data;
	TreeNode&lt;T&gt; *r;
	TreeNode&lt;T&gt; *l;

	TreeNode( void );
};

template &lt;class T&gt;
class Tree
{
private:
	TreeNode&lt;T&gt; *root;
	TreeNode&lt;T&gt; *pos;

	void InternFree( TreeNode&lt;T&gt; * );
	TreeNode&lt;T&gt; **InternFind( TreeNode&lt;T&gt; **w, T data );
	void InternPrint( TreeNode&lt;T&gt; *, int );

public:
	Tree( void );
	~Tree( void );

	void Print( void );
	bool Add( T data );
	bool Remove( T data );
};
</code></pre>
<p>und in der Datei ast.cpp sind die funktionen ausprogrammiert. Alle Funktionen sehen so aus:</p>
<pre><code>template &lt;class T&gt;
void Tree&lt;T&gt;::InternFree( TreeNode&lt;T&gt; *r )
{
	if( r != NULL )
	{
		InternFree( r-&gt;r );
		InternFree( r-&gt;l );

		delete r;
	}
}
</code></pre>
<p>wenn ich in der datei main.cpp diese Klasse verwende, kommt mehrere solche</p>
<blockquote>
<p>unresolved external symbol &quot;public: __thiscall Tree&lt;int&gt;::~Tree&lt;int&gt;(void)&quot; (??1?$Tree@H@@QAE@XZ) referenced in function _main main.obj</p>
</blockquote>
<p>Fehlermeldungen. Wenn ich aber den gleichen Code in die Datei ast.cpp schreibe, funktioniert alles prima. Für alle Funktionen die in der ast.cpp schon einmal aufgerufen wurden, wird keine Fehlermeldung ausgegeben.</p>
<p>Ich weiß nicht an was das liegt. ich hoffe ich hab mich verständlich ausgedrückt und ihr könnt mir helfen.</p>
<p>danke im voraus</p>
<p>dominik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131523/uresolved-external-symbol-mit-templates-in-visual-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 03:56:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131523.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jan 2006 09:26:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 09:26:17 GMT]]></title><description><![CDATA[<p>Also, ich programmiere eine template-Klassse in Visual C++ und ich habe drei dateien:</p>
<p>ast.h</p>
<pre><code>template &lt;class T&gt;
class TreeNode
{
public:
	T data;
	TreeNode&lt;T&gt; *r;
	TreeNode&lt;T&gt; *l;

	TreeNode( void );
};

template &lt;class T&gt;
class Tree
{
private:
	TreeNode&lt;T&gt; *root;
	TreeNode&lt;T&gt; *pos;

	void InternFree( TreeNode&lt;T&gt; * );
	TreeNode&lt;T&gt; **InternFind( TreeNode&lt;T&gt; **w, T data );
	void InternPrint( TreeNode&lt;T&gt; *, int );

public:
	Tree( void );
	~Tree( void );

	void Print( void );
	bool Add( T data );
	bool Remove( T data );
};
</code></pre>
<p>und in der Datei ast.cpp sind die funktionen ausprogrammiert. Alle Funktionen sehen so aus:</p>
<pre><code>template &lt;class T&gt;
void Tree&lt;T&gt;::InternFree( TreeNode&lt;T&gt; *r )
{
	if( r != NULL )
	{
		InternFree( r-&gt;r );
		InternFree( r-&gt;l );

		delete r;
	}
}
</code></pre>
<p>wenn ich in der datei main.cpp diese Klasse verwende, kommt mehrere solche</p>
<blockquote>
<p>unresolved external symbol &quot;public: __thiscall Tree&lt;int&gt;::~Tree&lt;int&gt;(void)&quot; (??1?$Tree@H@@QAE@XZ) referenced in function _main main.obj</p>
</blockquote>
<p>Fehlermeldungen. Wenn ich aber den gleichen Code in die Datei ast.cpp schreibe, funktioniert alles prima. Für alle Funktionen die in der ast.cpp schon einmal aufgerufen wurden, wird keine Fehlermeldung ausgegeben.</p>
<p>Ich weiß nicht an was das liegt. ich hoffe ich hab mich verständlich ausgedrückt und ihr könnt mir helfen.</p>
<p>danke im voraus</p>
<p>dominik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956350</guid><dc:creator><![CDATA[gast0]]></dc:creator><pubDate>Wed, 04 Jan 2006 09:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 09:53:17 GMT]]></title><description><![CDATA[<p>Template-Funktionen MÜSSEN im Header definiert werden, sonst kann der Compiler nicht den richtigen Maschinencode dafür bereitstellen (beim Compilieren der &quot;ast.cpp&quot; weiß er schließlich nicht, ob er Code für einen Tree&lt;int&gt;, Tree<a href="std::string" rel="nofollow">std::string</a> oder Tree&lt;userstruct&gt; benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956360</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Jan 2006 09:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 10:25:25 GMT]]></title><description><![CDATA[<p>und wie sage ich dem compiler das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956394</guid><dc:creator><![CDATA[gast0]]></dc:creator><pubDate>Wed, 04 Jan 2006 10:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 10:30:07 GMT]]></title><description><![CDATA[<p>Entweder inline implementieren (in der Klassendeklaration) oder den Quelltext in eine ipp|inl|was-auch-immer Datei packen und im Header nach der Deklaration inkludieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956400</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 04 Jan 2006 10:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 10:34:06 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Template-Funktionen MÜSSEN im Header definiert werden</p>
</blockquote>
<p>^^so <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>(Wenn du deine Quelldatei compilierst, weiß der Compiler die benötigten Typen - an der Stelle braucht er dann die Definition)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956405</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 04 Jan 2006 10:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 10:54:49 GMT]]></title><description><![CDATA[<p>hab jetzt auch den quelltext in die include-datei kopiert, wie ihr das gesagt habt. aber gibt es nicht einen anderen Weg? Weil dann steht ja der gesamte Quelltext, in jeder Datei wo ich #include aufrufe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956422</guid><dc:creator><![CDATA[gast0]]></dc:creator><pubDate>Wed, 04 Jan 2006 10:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to uresolved external symbol mit templates in Visual C++ on Wed, 04 Jan 2006 11:05:13 GMT]]></title><description><![CDATA[<p>Das ist Sinn der Sache und Nein, es gibt derzeit keinen anderen Weg (es sei denn, du benutzt Comeau, siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-131339.html" rel="nofollow">Beitrag</a>).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956432</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 04 Jan 2006 11:05:13 GMT</pubDate></item></channel></rss>