<?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[Klassen Template - Deklaration einer Methode funktioniert nicht in der .cpp]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche eine Templateklasse zu programmieren, die an und für sich auch funktioniert. Nur leider muss ich die Deklaration jeder Methode entweder direkt in der Klasse machen oder zumindest in der .hpp Datei der Klasse selber. Wenn ich es in der zugehörigen .cpp mache, bekomme ich einen Linkerfehler.</p>
<pre><code>check@tne:~/stua/ALG/Aufgabe1_Test$ make
g++  sortit.cpp fileread.cpp mergesort.cpp  -o sortit
/tmp/ccl9A7FC.o: In function `MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int)':
sortit.cpp:(.text._ZN9MergeSortIiE4sortEPP11CompareableIiEi[MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int)]+0x24): undefined reference to `MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int, int)'
collect2: ld returned 1 exit status
make: *** [sortit] Error 1
</code></pre>
<p>mergesort.hpp (Ausschnitt):</p>
<pre><code class="language-cpp">#ifndef MERGESORT_H
#define MERGESORT_H

#include &quot;compareable.h&quot;

template&lt;typename T&gt; class MergeSort {
        private:
                 void sort(Compareable&lt;T&gt; **array, int left, int right);
....
};
</code></pre>
<p>mergesort.cpp (Ausschnitt):</p>
<pre><code class="language-cpp">#include &quot;mergesort.h&quot;

template&lt;typename T&gt;
void MergeSort&lt;T&gt;::sort(Compareable&lt;T&gt; **array, int left, int right) {
        if(left &lt; right) {
                int center = (left+right)/2;
                sort(array, left, center);
                sort(array, center+1, right);
                merge(array, left, center, right);
        }
}
</code></pre>
<p>Über Tipps und Hilfe freu ich mich..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162639/klassen-template-deklaration-einer-methode-funktioniert-nicht-in-der-cpp</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 16:06:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162639.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Oct 2006 07:22:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen Template - Deklaration einer Methode funktioniert nicht in der .cpp on Sat, 21 Oct 2006 07:22:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche eine Templateklasse zu programmieren, die an und für sich auch funktioniert. Nur leider muss ich die Deklaration jeder Methode entweder direkt in der Klasse machen oder zumindest in der .hpp Datei der Klasse selber. Wenn ich es in der zugehörigen .cpp mache, bekomme ich einen Linkerfehler.</p>
<pre><code>check@tne:~/stua/ALG/Aufgabe1_Test$ make
g++  sortit.cpp fileread.cpp mergesort.cpp  -o sortit
/tmp/ccl9A7FC.o: In function `MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int)':
sortit.cpp:(.text._ZN9MergeSortIiE4sortEPP11CompareableIiEi[MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int)]+0x24): undefined reference to `MergeSort&lt;int&gt;::sort(Compareable&lt;int&gt;**, int, int)'
collect2: ld returned 1 exit status
make: *** [sortit] Error 1
</code></pre>
<p>mergesort.hpp (Ausschnitt):</p>
<pre><code class="language-cpp">#ifndef MERGESORT_H
#define MERGESORT_H

#include &quot;compareable.h&quot;

template&lt;typename T&gt; class MergeSort {
        private:
                 void sort(Compareable&lt;T&gt; **array, int left, int right);
....
};
</code></pre>
<p>mergesort.cpp (Ausschnitt):</p>
<pre><code class="language-cpp">#include &quot;mergesort.h&quot;

template&lt;typename T&gt;
void MergeSort&lt;T&gt;::sort(Compareable&lt;T&gt; **array, int left, int right) {
        if(left &lt; right) {
                int center = (left+right)/2;
                sort(array, left, center);
                sort(array, center+1, right);
                merge(array, left, center, right);
        }
}
</code></pre>
<p>Über Tipps und Hilfe freu ich mich..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158521</guid><dc:creator><![CDATA[Savar]]></dc:creator><pubDate>Sat, 21 Oct 2006 07:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen Template - Deklaration einer Methode funktioniert nicht in der .cpp on Sat, 21 Oct 2006 07:38:45 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-151578-and-start-is-0.html" rel="nofollow">Die meistgestellten Fragen</a> Nummer 5.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158523</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 21 Oct 2006 07:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen Template - Deklaration einer Methode funktioniert nicht in der .cpp on Sun, 22 Oct 2006 00:51:18 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1158861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1158861</guid><dc:creator><![CDATA[Savar]]></dc:creator><pubDate>Sun, 22 Oct 2006 00:51:18 GMT</pubDate></item></channel></rss>