我一直在学习 C++ 中的模板,它们看起来非常方便。但是,在http://www.cplusplus.com/doc/tutorial/templates/的最底部有一个关于在大型多文件项目中使用模板的问题的注释:“因为模板是在需要时编译的,所以这个强制限制多文件项目:模板类或函数的实现(定义)必须与其声明位于同一文件中。”
举个例子,想写一个对T
typename 进行操作的 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
这些函数,因为它们在头文件中?