KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to overload the operator << as a friend to a template class Pair, but I keep getting a compiler warning saying friend declaration std::ostream& operator<<(ostream& out, Pair<T,U>& v) declares a non template function for this code: friend ostream& operator<<(ostream&, Pair<T,U>&); it gives a second warning as a recommendation saying if this is not what you intended, make sure the function template has already been declared and add <> after the function name here Here is the function definition template <class T, class U> ostream& operator<<(ostream& out, Pair<T,U>& v) { out << v.val1 << " " << v.val2; } and here is the whole class. template <class T, class U> class Pair{ public: Pair(T v1, U v2) : val1(v1), val2(v2){} ~Pair(){} Pair& operator=(const Pair&); friend ostream& operator<<(ostream&, Pair<T,U>&); private: T val1; U val2; }; I wasn't sure what to draw from the recommendation warning, other than that maybe I have to put somewhere in the friend declaration. Does anyone know the proper syntax for this? Thanks.
Tags (comma-separated)
Save Edits
Cancel