Templates & Linkerfehler
-
Hi, ich bekomme bei diesem Code:
#include <iostream> using namespace std; template <class T> class Foo { private: T var; public: Foo(T v):var(v) { } ~Foo() { } T getVar() const { return var; } void setVar(T var) { this->var = var; } friend ostream& operator<<(ostream& o, const Foo& rhs); operator T*() const; }; template <class T> ostream& operator<<(ostream &o, const Foo<T>& rhs) { o << rhs.var; return o; } template <class T> Foo<T>::operator T*() const { return &var; } int main() { Foo<int> f(10); cout << f; int i2; cin >> i2; return 0; }
folgenden Linkerfehler:
main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Foo<int> const &)" (??6@YAAAV?char_traits@D@std@@@std@@AAV01@ABV?$Foo@H@@@Z) referenced in function _main
Debug/cpplearning.exe : fatal error LNK1120: 1 unresolved externalsIch kann mit diesem Linkerfehler allerdings nichts anfangen. Was habe ich in meiner Klasse falsch gemacht?