私は 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
それらはヘッダー ファイルにあるため、関数を使用する必要がありますか?