模板类的定义与实现分别放在.h和.cpp中,VC6编译的时候报错
// ------------------
// Main.cpp - begin
#include "Tree.h "
int main()
{
Tree <int> t;
return 0;
}
// Main.cpp - end
// ------------------
// ------------------
// Tree.h - begin
#ifndef _TREE_H
#define _TREE_H
#include "iostream.h "
template <class T>
class Tree
{
private:
T cContent;
public:
Tree();
~Tree();
int SetContent(T cContent);
T GetContent();
};
#endif
// Tree.h - end
// ------------------
// ------------------
// Tree.cpp - start
#include "Tree.h "
template <class T>
Tree <T> ::Tree()
{
cout < < "Tree " < <endl;
return ;
}
template <class T>
Tree <T> ::~Tree()
{
return ;
}
template <class T>
T Tree <T> ::GetContent()
{
return cContent;
}
template <class T>
int Tree <T> ::SetContent(T cContent)
{
this-> cContent = cContent;
return 0;
}
// Tree.cpp - end
// ------------------
[解决办法]
贴个pongba的blog链接:
http://blog.csdn.net/pongba/archive/2003/10/24/19130.aspx
因为当前很少有编译器能实现模板的分离式编译
[解决办法]
用export关键字可以实现,但现在貌似还没有compiler支持.
期待下一代C++吧.
现在的解决办法就是:先把它们都放到.h文件里吧.
[解决办法]
这个目前几乎所有常用的编译器都要报错。
[解决办法]
编译器不能识别这种模板方式