我一直在C++中学习模板,他们看起来非常方便。但是,在底部http://www.cplusplus.com/doc/tutorial/templates/的大型多文件项目中使用模板时存在一些问题:“由于模板是在需要时编译的,因此这会强制限制多文件项目:实现(定义)模板类或函数必须与其声明位于同一个文件中。“如何正确使用跨多文件项目的模板?
所以,举个例子,想要写一个关于T
类型名称运行的2D Vector类模板:
template <class T>
class Vector {
T x, y;
public:
Vector(T x, T y)
{
this->x = x;
this->y = y;
}
void normalize()
{
T length = sqrt(x * x + y * y);
x = x/length;
y = y/length;
}
};
我的问题很简单,哪里会你把这个模板,以便多个.cpp文件访问到它?如果你把它放在一个Math.h文件中,你保留了所有其他自定义数学相关的声明,那么你是否需要inline
函数,因为它们在头文件中?