大家好,我是小新,我来为大家解答以上问题。template
1、楼主你好!
2、当然要写template <class T>了。
3、例如要写成员函数 Node<T>* NextNode()const;的实现
4、那么自然要写成
5、Node<T>* Node<T>::NextNode()const//注意加上Node<T>::作为域的限
6、 //制,这样就区别于全局函数。标志着它是Node<T>的成员函数
7、{
8、 return next;
9、}
10、但是这时候注意这个“T”是无法识别的,编译器根本不知道他是什么。
11、所以完整要写成
12、temolate <class T>//告诉编译器T是一个(模板)类型
13、Node<T>* Node<T>::NextNode()const
14、{
15、 return next;
16、}
17、所以每次类的实现前面都要写 “template <class T>” !
18、还有多文件的时候,理论上和单文件的时候没有任何区别。
19、但是注意:模板类或者函数最好不要写成多文件,因为这种“分离模型”虽然是“标准”所承认的,但是因为技术原因至今没有一个编译器能完美的支持模板的多文件!
20、顺便说一下,即使是C++的标准库都是把模板的定义和申明写在一个文件里的。
21、我想楼主问的我都说完了,如果还有不懂得,楼主可以参考《C++ Template》,它解释了C++关于模板的所有问题。
22、还有,这类关于语义的问题楼主最好参阅《The Design and Evolution of C++》
23、不知楼主还有啥不懂得,可以给我留言~~我们一起讨论
本文到此讲解完毕了,希望对大家有帮助。