原因:
c++在写模版函数时(template之类的),头文件不能与cpp文件分离。这就意味者,你头文件定义的含模版的地方必须在头文件中实现,没用模版定义的地方可以放在cpp中实现。
如果要分离在.h和.cpp中,那么要用export关键词,可是目前很少有编译器支持,这个是很有争议的一个关键字。
所以,检测是否将模板类的成员函数的定义和实现分别放在了.h和.cpp里面?
如果是的,请将他们放在同一个文件里面。或者避免声明成模板类。
比如这样:
class Caculator
{
public:
// 声明和定义都在同一文件中
template<T>
void init(T a) {
// ...
}
};
或者
class Caculator
{
public:
// 函数声明
template<T>
void Caculator::init(T a);
};
// 函数定义
template<T>
void Caculator::init(T a) {
// ...
}