Hallo,
ich versuch gerade eine Klasse mithilfe von Templates zu erweitern, bekomme allerdings einige Probleme.
Die Dateien schauen wie folgt aus:
main.cpp
	
test.h
	
test.cpp
	
Wenn ich das mit dem g++ kompilieren will kommt folgende Meldung:
	
Wenn ich das ganze allerdings in eine Datei schreibe funktioniert es:
	
Kann mir jemand bitte sagen, was ich falsch mache?
MFG genw
									
									
								ich versuch gerade eine Klasse mithilfe von Templates zu erweitern, bekomme allerdings einige Probleme.
Die Dateien schauen wie folgt aus:
main.cpp
#include "test.h"
int main(){
Test test;
test.quadrat(6);
}
test.h
class Test{
public:
template<class T> bool quadrat(T var);
};
test.cpp
#include <iostream>
#include "test.h"
using namespace std;
template<class T> bool Test::quadrat(T var){
cout << var * var << endl;
}
Wenn ich das mit dem g++ kompilieren will kommt folgende Meldung:
g++ -c test.cpp
g++ -o main main.cpp test.o
/tmp/ccMfJ90O.o: In function `main':main.cpp:(.text+0x2b): undefined reference to `bool Test::quadrat<int>(int)'
collect2: ld gab 1 als Ende-Status zurück
Wenn ich das ganze allerdings in eine Datei schreibe funktioniert es:
#include <iostream>
using namespace std;
class Test{
private:
public:
template<class T> bool quadrat(T var);
};
template<class T> bool Test::quadrat(T var){
cout << var * var << endl;
}
int main(){
Test test;
test.quadrat(6);
}
Kann mir jemand bitte sagen, was ich falsch mache?
MFG genw
											
 muss ich es halt so machen.