Dragon 第一期开发日志

博主在Dragon项目中探索STL源码,整理模板类和运算符重载知识,尝试解决线性表、输出流及函数对象的问题。通过分析编译错误,了解函数对象和适配器的用法,同时也遇到并分析了抽象类实例化、内存访问错误等问题,以及在实现排序算法中遇到的挑战和解决方案。
摘要由CSDN通过智能技术生成

前言

花了一个星期准备构思,结果感觉还是回到原来的设想上,不过当然也收获了STL源码的20%,的确精妙,学不来了,先做吧。

要花点时间将模板和运算符重载的知识点整理总结一下。明晚 后晚 大后晚 争取三晚完成

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.25

time consume: around 1h

完成了线性表头文件的模板类定义,但不包含LinkedList的定义。

-------------------------------------------------------------------------------------------------------------------------------------------

1.26

有两个问题

1. 待验证

template<class T> class A {}

template<class T> class B:public A<T> {}

有函数func(A<T> a) 问类型为B<T>的实参能够传入这个函数呢?待验证

2. 第二个问题是获取cout

已经验证可以用函数来获取:
void print(std::ostream &o, int d){ o<<d;} 但是注意ostream的形参不能是const

但是如果用类来获取呢?

如class A

{

     ostream mo;

      A(ostream &o) { mo = o; }

}

报错:

error C2512: 'basic_ostream<char,struct std::char_traits<char> >' : no appropriate default constructor available

这里暂时还没弄清楚是怎么回事。请教各位老师同学了。

 

最后发泄一下:这里这个博客太烂了。没有及时保存功能,我是重写了3遍呀!!!!!!!!!!!!!!!!!!!!!

哈哈!好了。

明晚继续吧。

----------------------------------------------------------------------------------------------------------------------------------------------

1.27

转到csdn博客上面 这里的编辑器强大太多了。

 

解决昨晚的问题:

对于cout的问题:

事实上,ostream o = cout 是没问题的,问题存在于在一个模板类的构造函数中,能不能将一个ostream对象传入后赋值给o?


template<typename T>
struct Prdct_Output : public Unary_Function<T,void>
{   

    std::ostream m_oOutput;
   
    Prdct_Output<T>(std::ostream o)
    {
        m_oOutput = o;
    }

    void operator()(T &e) {
       
        m_oOutput<<"<"<<e<<">";
    }

};

对于这段源码,编译报错是:

error C2512: 'basic_ostream<char,struct std::char_traits<char> >' : no appropriate default constructor available

还是没能解决。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值