我一直在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
函數,因爲它們在頭文件中?