有没有更好的方法来执行以下操作?
我有一个矢量类,具有以下功能:
template <typename T>
bool Vector3<T>::IsUnitVector() const
{
return IsAlmostEqual(this->GetLength(), One<T>::Value());
}
由于 T 可以是浮点型或双精度型(我使用显式模板实例化来确保仅支持这些类型),因此我必须创建一个帮助器类,它以正确的类型返回值 1:
template <typename T>
struct One
{
static T Value();
};
template <>
struct One<int>
{
static int Value() { return 1; }
};
template <>
struct One<float>
{
static float Value() { return 1.0f; }
};
template <>
struct One<double>
{
static double Value() { return 1.0; }
};
这还不算太糟糕,直到我意识到我还需要创建一个Zero
类来进行其他比较。所以我的问题是,有没有更好的方法来实现这一目标?