C++:从浮点数类型长度

发布于 2024-08-26 00:35:13 字数 270 浏览 8 评论 0原文

这有点像我之前的问题: C++:Vector3类型“wall”?

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

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

基本上,我将进入“多打字”阵营。

This is kinda like my earlier question:
C++: Vector3 type "wall"?

Except, now, I want to do this to a builtin rather then a user created type.

So I want a type "Length" that behaves just like float -- except I'm going to make it's constructor explicit, so I have to explicitly construct Length objects (rather than have random conversions flying around).

Basically, I'm going into the type-a-lot camp.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

巷雨优美回忆 2024-09-02 00:35:14

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

Like suggested in a comment over at your other question you can use units from boost. This should be explicit and still manageable.

拥醉 2024-09-02 00:35:14

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

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

It sounds like you want to wrap a float primitive in your own class. Here's an example to get you started:

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_); }
};

But, using the boost Units library is a much better choice in the long run...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文