我正在尝试将运算符<<作为模板类Pair的朋友重载,但我不断收到编译器警告说
friend declaration std::ostream& operator<<(ostream& out, Pair<T,U>& v) declares a non template function
对于此代码:
friend ostream& operator<<(ostream&, Pair<T,U>&);
它给出第二条警告作为建议说
if this is not what you intended, make sure the function template has already been declared and add <> after the function name here
这是功能定义
template <class T, class U>
ostream& operator<<(ostream& out, Pair<T,U>& v)
{
out << v.val1 << " " << v.val2;
}
这是全班。
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;
};
我不确定从推荐警告中可以得出什么,除了我可能必须在朋友声明中放置某处之外。有谁知道正确的语法吗?谢谢。
守着一只汪
jeck猫
相关分类