关于模版类或者函数的使用问题

来源:互联网 发布:平面设计软件哪些免费 编辑:程序博客网 时间:2024/06/05 07:23



在使用模版类或者模版函数过程中,按照原来C++一般类与函数的使用原则,调试时出现错误,提示某些函数或者类没有被引用,经过网上查找和《C++Primer》讲解,发现模版类或者模版函数编译与非模板类或者函数不一样,它的编译方法有两种:

1.包含编译(所有编译器都支持)

一般通过在声明函数模板或者类模板的头文件中添加一条#include包含实现函数模板和类模板的文件,例子如下:

//声明文件(TemplateTmp.h)#ifndef TEMPLATETMP_H_#define TEMPLATETMP_H_template<class TYPE> class CTemplateTmp{public:      TYPE GetElem();//....public:TYPE m_tObj;};#include "TemplateTmp.cpp" #endif//实现文件(TemplateTmp.cpp)#ifndef TEMPLATETMP_CPP_#define TEMPLATETMP_CPP_#include "TemplateTmp.h"template<class TYPE>TYPE CTemplateTmp<TYPE>::GetElem(){     return m_tObj;} #endif

2.分别编译(部分编译器支持,需要支持export关键字)
这种编译方法用的比较少,直接举例子:

//声明文件(TemplateTmp.h)template<class TYPE> class CTemplateTmp{...};//实现文件(TemplateTmp.cpp)export template<class TYPE> class CTemplateTmp;#include "TemplateTmp.h"//CTemplateTmp实现部分


最后,感谢网友帮助以及《C++Primer》作者,希望能够把自己的教训与经验分享给网友们,共同学习,晚安!