[经验]关于类模板的问题
经过几天反复调试和同学的帮忙,问题终于解决了,但还是不知道问题症结所在。是这样的:有一个类模板,我把它分成了类的声明(test.h文件中)和类的实现(.cpp文件中),程序始终报错:无法连接的外部符号。
但当把类的声明和实现全部都放在.h文件中时,就没有错误了。注:无论这个模板是多么的简单。
我不知道这是为什么,不知道各位网友有没有遇到过这样的问题。
我用的是vs2003和dev。
我前2天也遇到过这种问题!
我遇到的是头文件包含的问题。总结的经验是:不管是你的.h还是.cpp文件要把所有的用到的头文件、库文件、名空间全搞进去!然后用头文件卫士避免重定义!!
还有如果用到inline 最好不要放到类定义外,
用friend函数的时候,注意参数、返回值类型涉及到多个自定义类型时也容易出错,这时要向前声明!!!
个人经验希望对你有帮助!
[此贴子已经被作者于2006-7-9 18:59:41编辑过]
那么,凡是定义类模板时,都必须放在.h文件中吗?有没有其他解决方法?
你确定看懂我上面说的话了?
那么自然也可以把实现文件放进main文件中
比如:
//---head file(test.h)---//
template <class T>
class A
{
public:
void print();
};
//---main文件---//
#include "test.h"
void main(){A<int> a;a.print();}
template<class T>void A<T>::print(){}
[此贴子已经被作者于2006-7-12 19:06:17编辑过]