Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
template <class T> class MyTemplateClass : public AnotherClass {
public:
T* getObject();
//...
};
template<class T> T* MyTemplateClass::getObject() {
return new T();
}
template <class T> class MyTemplateClass {
public:
MyTemplateClass(void);
T* getObject();
int size(void);
//...
};
#include "MyTemplateClass.h"
template<class T> T* MyTemplateClass::getObject() {
return new T();
}
template<class T> MyTemplateClass::MyTemplateClass(void)
{
cout<<"HELLO"<<endl;
}
template<class T> int MyTemplateClass::size(void)
{
cout<<"Grösse: "<<sizeof(T)<<endl;
return 0;
}
#include <iostream>
#include <stdlib.h>
#include "MyTemplateClass.h"
using namespace std;
int main(void)
{
MyTemplateClass<int> ttest();
ttest.size();
system("Pause");
return 0;
}
Original geschrieben von Tobiasm
Bist Du sicher, dass Templates in eine Cpp-Datei gehören? AFAIK gehören sie entweder direkt in den Header oder aber in eine Datei, die in den Header per #include "..." eingebunden wird.
Der Grund ist folgender: "When writing template classes, function definitions are usually stored in a header file along with their declarations, and not in a separate .cpp file. Trying to do otherwise typically will result in a linker error. This is because most compilers require template definitions to be available to each translation unit that uses them, through the inclusion of header files." (http://www.codeguru.com/atl/KD062002.html - Stand 22.01.04)
Ich weiß jetzt aber nicht, ob es schon weit verbreitete Compiler bzw. Linker (z.B. GCC) gibt, die das nicht mehr brauchen.
MfG
Tobias
template<class T> T* MyTemplateClass<T>::getObject()