今天使用模版函数,遇到一个问题。
当我定义一个类,并且将它的一个成员函数定义为模版类型时,需要将该模版函数的实现与该类放在一个文件中。
比如在a.h中定义了class a:
class a
{
...
template<typename T> a(const T& t);
};
其中函数使用了模版,那么该模版函数的实现需要也放在a.h中,如果放在a.cpp中,那么在使用时可能会出现
error LNK 2019 unresolved external symbol .................... referenced in function
的问题。
原因:
引用C++primer的话:C++支持两种模板编译模式包含模式Inclusion Model 和分离模式Separation Model
1. 包含编译模式