LinearList.h
main.cpp
- #include <iostream>
- #include "LinearList.h"
- using namespace std;
- int main()
- {
- Chain<int> bob;
- cout<<bob.IsEmpty()<<endl;
- cout<<bob.Length()<<endl;
- bob.Insert(0,33);
- cout<<bob.Length()<<endl;
- cout<<bob<<endl;
- return 0;
- }
很奇怪的是这里没有LinearList.cpp文件,原因如下:
将类的定义和类成员函数的定义(实现文件)分别放入不同的文件,目标代码根据实现文件生成(和客户代码无关),并且和客户代码链接,这种做法对于类模板是不适用的。因为为函数传递参数在运行时起作用,而给类模板传递参数则在编译阶段起作用。由于类模板的实际参数在客户代码中指定,并且没有实际参数的编译器无法实例化一个函数模板,所以必须依赖客户代码才可编译模板的实现文件部分。
解决方案1:将类定义和函数模板定义直接包含在用户文件中,或者将类定义和函数模板定义都放在同一个头文件中;
解决方案2:将类定义的函数定义话在不同的文件中,但在头文件的末尾处包含实现文件。
不管用什么方法,客户代码要和函数定义一起编译。
阅读(1083) | 评论(0) | 转发(0) |