这有点像我之前的问题: C++: Vector3 type "wall"?
除了现在,我想对内置而不是用户创建的类型执行此操作。
所以我想要一个行为就像 float 一样的类型“Length”——除了我要让它的构造函数显式,所以我必须显式地构造 Length 对象(而不是让随机转换飞来飞去)。
基本上,我要参加大量类型的训练营。
这有点像我之前的问题: C++: Vector3 type "wall"?
除了现在,我想对内置而不是用户创建的类型执行此操作。
所以我想要一个行为就像 float 一样的类型“Length”——除了我要让它的构造函数显式,所以我必须显式地构造 Length 对象(而不是让随机转换飞来飞去)。
基本上,我要参加大量类型的训练营。
就像在您的其他问题的评论中建议的那样,您可以使用boost 中的单位。这应该是明确的并且仍然可以管理。
听起来您想在自己的类中包装一个浮点原语。这是一个帮助您入门的示例:
class Length
{
protected:
float value_;
public:
Length(float value) : value_(value) { }
static Length operator +(Length a, Length b) { return Length(a.value_ + b.value_); }
static Length operator -(Length a, Length b) { return Length(a.value_ - b.value_); }
static Length operator *(Length a, Length b) { return Length(a.value_ * b.value_); }
static Length operator /(Length a, Length b) { return Length(a.value_ / b.value_); }
};
但是,从长远来看,使用 boost Units 库是一个更好的选择......