首页 新闻 搜索 专区 学院

C++模板,重载运算符<<,参照的C++primer,为什么有编译错误呢?

0
悬赏园豆:20 [已解决问题] 解决于 2018-12-28 15:56
#include<iostream>
using namespace  std;
template<typename T>
class Code;

//友元函数的声明;
template<typename T>
ostream& operator<< (ostream& , Code<T>&);

template<typename T>
class Code
{
public:
    friend ostream& operator << <T>(ostream& out, const Code<T>&code);
    Code() {data=10;}

private:
    T data;
};

//友元函数的实现;
template<typename T>
ostream& operator << (ostream& out, const Code<T>&code)
{
    out << "data: " << code.data << endl;
    return out;
}
int main()
{
    Code<int> d;
    cout<<d<<endl;
    return 0;
}

错误信息:[Error] template-id 'operator<< <int>' for 'std::ostream& operator<<(std::ostream&, const Code<int>&)' does not match any template declaration

lif323的主页 lif323 | 初学一级 | 园豆:114
提问于:2017-06-24 23:40
< >
分享
最佳答案
1

声明改成const Code&

收获园豆:20
hehe_54321 | 小虾三级 |园豆:750 | 2017-10-08 17:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册