模板在没有实例化之前是无法编译的,因为没有使用类型实例化的模板是不能生成代码的。所以一般处理模板的方法是,将模板的声明和定义都放到一个.h文件之中,或者使用export关键字,但是后者在很多C++编译器实现(如:VC)中不被支持.
如果说硬要把声明和定义分开来写的,也是可以的,不过用起来就不好了!例如,要做一个Stack,会在main中调用Stack<int> s;这样的语句,那么就必须在Stack.cpp文件的后面加上一句template class Stack<int>;
1 template <class T>
2 class Stack
3 {
4 public:
5 Stack();
6 ~Stack();
7 public:
8 void pop();
9 //
10 };
1 #include "Stack.h"
2
3 template <class T>
4 Stack<T>::Stack(void)
5 {}
6
7 template <class T>
8 Stack<T>::~Stack(void)
9 {}
10
11 template <class t>
12 void Stack<T>::pop()
13 {
14 //
15 }
16
17 template class Stack<int>;
可以看出,用户要用其它类型的Stack的话就必须在Stack.cpp文件中加入具体的类型.不然就会出现类似这样的错误提示:
error LNK2019: 无法解析的外部符号 "public: __thiscall Stack<int>::~Stack<int>(void)" (??1?$Stack@H@@QAE@XZ),该符号在函数 _main 中被引用
所以,还是所声明与定义都会在.h文件中吧.
昨天,去听报告了!这是学校的规定:新生必须听四次研究生处组织的报告!
去的人还是比较多的,我坐在后面!还没开始,左邻右里就开始发话了,在那里狂吹!这没什么,反正还没有开始嘛,说她们也不好意思!我就安静的坐好!
好了,开始了!这次做讲座的是生命科学院的博导,内容是:从DNA的发展,看现代生物工程!是一个比较有趣的话题!我周边的研究生,一直没有停止她们的悬河,还是在决堤,滔滔不绝!我也算是一支独秀了(没话可说)!讲座是一个半小时,她们也就在那狂轰了一个半小时!
最后了,王老师说到了提问的环节了!后面一个女生出了这么一句:那个老师怎么还在说话啊,浪费人时间啊!
现在的研究生的素质怎么这样子啊!?你要听不听,开"小"差还算次之,居然发出这种言论,可耻!