朱倩倩zqq 2021-05-11 15:36 采纳率: 75%
浏览 27
已采纳

关于重载输入输出在类模板中的应用(求大佬指点)

#include<iostream>
#include<cstdlib>
using namespace std;
template<class T>
class data1
{
private:
    T* date;
    int size;
public:
    data1(int n=0);
    ~data1();
    data1(const data1<T>& cp);
    data1<T>& operator=(const data1<T>& cp);
    T get(int _size);
    friend istream& operator>>(istream& in, data1<T>& cp);
    friend ostream& operator<<(ostream& out, data1<T>& cp);
};
template<class T>
data1<T>::data1(int n):size(n)
{
    date = new T[size];
    for (int i = 0; i < size; i++)
    {
        date[i] = rand() % 100;
    }
}
template<class T>
data1<T>::~data1()
{
    if (date != 0)
        delete[]date;
}
template<class T>
data1<T>::data1(const data1<T>& cp)
{
    size = cp.size;
    date = new T[size];
    for (int i = 0; i < size; i++)
    {
        date[i] = cp.date[i];
    }

}
template<class T>
data1<T>& data1<T>::operator=(const data1<T>& cp)
{
       if (date != 0)
        delete[]date;
       size = cp.size;
       date = new T[size];
       for (int i = 0; i < size; i++)
       {
           date[i] = cp.date[i];
       }
}
template<class T>
T data1<T>::get(int _size)
{
    return date[_size];
}
template<class T>
istream& operator>>(istream& in, const data1<T>& cp)
{
    in >> cp.size;
    for (int i = 0; i <cp.size; i++)
    {
        in >> cp.date[i];
    }
    return in;
 }
template<class T>
ostream& operator<<(ostream& out,const data1<T>& cp)

    out << "输出元素个数为:" << cp.size << endl;
    for (int i = 0; i < cp.size; i++)
    {
        out >> cp.date[i]<<" ";
    }
    return out;
}
int main()
{
    data1<int> bu9(5);
    cin >> bu9//调用重载输入模板,出现无法解析外部符号,这是为什么呢?
    cout << bu9;
    return 0;

}

展开全部

  • 写回答

4条回答 默认 最新

  • p15965349202 2021-05-11 17:14
    关注

    将友元函数在模板类内部实现就好了,再Effective C++条款45中,有详细解释

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部