前言
花了一个星期准备构思,结果感觉还是回到原来的设想上,不过当然也收获了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
还是没能解决。