使用模板类导致error LNK2019: 无法解析的外部符号
1.定义模板类:
template<class T>
class Stack
{....};
2.定义模板成员函数:
每个函数头都要以相同的模板声明打头,并将类限定符改成:类名<T>::这种形式。
template<class T>
bool Stack<T>::push(T tmp)
{...}
3.模板类的使用
Stack<int> object;
4.除非编译器实现了新的export关键字,否则将模板成员函数设置在一个独立的实现文件中将无法运行。因为模板不是函数,它们不能单独编译。模板必须与特定的模板实例化请求一起使用。为此,最简单的方法是将所有模板信息放在一个头文件里,并在要使用这些模板的文件中包含该头文件。如果编译器实现了心得export关键字,则可以将模板方法定义放在一个独立文件中,条件是每个模板声明都是以export开始:
#ifdef STACKTP_H_
#define STACKTP_H_
export template<class T>
class Stack
{......}
#endif
然后按常规类的方式进行:
1.将模板类声明(包括关键字export)放在一个头文件中,并使用#include编译指令时程序能够使用这些声明。
2.将模板类的方法定义放在源代码文件中,在该文件中包含头文件,并使用工程文件时程序能够使用这些定义。