Доброго времени суток. Подскажите плз как сделать чтобы дружественная функция могла принимать/возвращать в качестве аргумента объект параметризованого класса?
e.g.
template <class T> class A
{
private:
T a;
T b;
public:
A();
A(T aa, T bb);
friend std::ostream& operator<< (std::ostream& os, A<T>& t);
};
template <class T> std::ostream& operator<< (std::ostream& os, A<T>& t)
{
os << t.a << std::endl << t.b;
return os;
}
При линковке выдается сообщение об ошибке:
gcc 3.4.2:
undefined reference to `operator+(int, A<int>&)'
VC2003:
unresolved external symbol "int __cdecl operator+(int,class A<int> &)"
Если же реализовать фукцию operator<< сразу же в теле класса, то ни каких проблем. В чем моя ошибка?
Заранее благодарен.
Раскраска синтаксиса: тэг [ccode] вместо [code] — Кодт