朱倩倩zqq 2021-05-11 23: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-12 01:14
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?
  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启