1

这有点像我之前的问题: C++: Vector3 type "wall"?

除了现在,我想对内置而不是用户创建的类型执行此操作。

所以我想要一个行为就像 float 一样的类型“Length”——除了我要让它的构造函数显式,所以我必须显式地构造 Length 对象(而不是让随机转换飞来飞去)。

基本上,我要参加大量类型的训练营。

4

2 回答 2

3

就像在您的其他问题的评论中建议的那样,您可以使用boost 中的单位。这应该是明确的并且仍然可以管理。

于 2010-03-17T03:51:30.577 回答
1

听起来您想在自己的类中包装一个浮点原语。这是一个帮助您入门的示例:

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 库是一个更好的选择......

于 2010-03-17T05:32:43.277 回答