What am I doing wrong? (Operator overloading)
Code:
#ifndef TEST
#define TEST
using namespace std;
template <typename T>
class Test
{
private:
T number;
public:
Test();
Test(T);
template <typename T> friend Test<T> operator+(Test<T> &a, Test<T> &b);
template <typename T> friend ostream& operator<<(ostream& out, Test<T> &obj);
};
template <typename T>
Test<T>::Test(T num1)
{
number = num1;
}
template <typename T>
Test<T> operator+(Test<T> &a, Test<T> &b)
{
return Test<T>(a.number + b.number);
}
template <typename T>
ostream& operator<<(ostream& out, Test<T> &obj1)
{
out<< obj1.number;
return out;
}
#endif
Code:
#include <iostream>
#include "Test.h"
using namespace std;
int main()
{
Test <int> obj1(5);
Test <int> obj2(2);
Test <int> obj3;
obj3 = obj1 + obj2;
cout << obj3;
return 0;
}
I keep getting an error that says: "LNK2019: unresolved external symbol "public: __thiscall Test<int>::Test<int>(void)" (??0?$Test@H@@QAE@XZ) referenced in function _main"