Klassen Template - Deklaration einer Methode funktioniert nicht in der .cpp
-
Hallo,
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.
check@tne:~/stua/ALG/Aufgabe1_Test$ make g++ sortit.cpp fileread.cpp mergesort.cpp -o sortit /tmp/ccl9A7FC.o: In function `MergeSort<int>::sort(Compareable<int>**, int)': sortit.cpp:(.text._ZN9MergeSortIiE4sortEPP11CompareableIiEi[MergeSort<int>::sort(Compareable<int>**, int)]+0x24): undefined reference to `MergeSort<int>::sort(Compareable<int>**, int, int)' collect2: ld returned 1 exit status make: *** [sortit] Error 1mergesort.hpp (Ausschnitt):
#ifndef MERGESORT_H #define MERGESORT_H #include "compareable.h" template<typename T> class MergeSort { private: void sort(Compareable<T> **array, int left, int right); .... };mergesort.cpp (Ausschnitt):
#include "mergesort.h" template<typename T> void MergeSort<T>::sort(Compareable<T> **array, int left, int right) { if(left < right) { int center = (left+right)/2; sort(array, left, center); sort(array, center+1, right); merge(array, left, center, right); } }Über Tipps und Hilfe freu ich mich..
-
Die meistgestellten Fragen Nummer 5.
-
Vielen Dank!