Ich weis das ist wahrscheinlich der ur leichte fehler! aber ich finde ihn trotzdem nicht!!
Also: ich hab ein Template FGraph und möchte diese Template-Class einmal verwenden:
main.cpp:
C
#include <iostream>
#include "FGraph.h"
#include "Human.h"
using namespace std;
int main(int argc, char *argv[]){
Human mike("Mike","-");
FGraph<Human> sBaum;
sBaum.Root = mike;
cout << sBaum.toString();
}
Alles anzeigen
FGraph.h:
FGraph.cpp:
Code
template<class T> FGraph<T>::FGraph(){
Root = T();
addDirectDescendant( T() , T());
}
template<class T> FGraph<T>::FGraph(T root){
Root = root;
addDirectDescendant( Root , T());
}
template<class T> FGraph<T>::~FGraph(){
for(int i = 0; i < m_descendant.size(); i++){
delete m_descendant.at(i);
}
}
Alles anzeigen
Und mein Compiler spuckt nur aus:
Code
#> make
g++ -ansi -pedantic-errors -g -Wall -c main.cpp
g++ -ansi -pedantic-errors -g -Wall -c FGraph.cpp
g++ -o myFGraph -g main.o FGraph.o Human.o
main.o: In function `main':
/home/strenkwalder/.eclipse/FGraph/main.cpp:12: undefined reference to `FGraph<Human>::FGraph()'
/home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::toString()'
/home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::~FGraph()'
/home/strenkwalder/.eclipse/FGraph/main.cpp:15: undefined reference to `FGraph<Human>::~FGraph()'
collect2: ld returned 1 exit status
make: *** [FGraph] Fehler 1
Alles anzeigen
und jetzt meine frage: Wo ist das problem ich habs mit include richtig eingebunden und sonst mault der compiler auch nicht!!:confused:
es hat sicher was mit dem template aufruf zu tun!!! weil wenn ich die zu einem nicht template class mach dann gehts ohne fehler