毫米的boost ::单位 [英] Millimeters in boost::units

查看:389
本文介绍了毫米的boost ::单位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用boost ::单位的一些SI指标。但是我们的code大多是涉及毫米和,而不是使用

I want to use boost::units for some SI metrics. However our code mostly deals with millimeters and instead of using

quantity<length> value = 1*milli*meter;

我们将preFER像

quantity<length> value = 1*millimeter;

不过我不知道如何界定毫米(不使用#define)。

However I am not sure how to define "millimeter" (without using #define).

其次,什么是使用prefixed单位开销?

Secondly, what is the overhead in using prefixed units?

更新:这需要没有C ++ 11功能运行(即,没有UDL)

Update: This needs to run without C++11 features (i.e. no UDL)

推荐答案

我使用下面的方法:

// your namespace name for units
namespace outernamespace {
    namespace millimeter_system {
        typedef boost::units::scaled_base_unit<boost::units::si::meter_base_unit, boost::units::scale<10, boost::units::static_rational<-3>>> millimeter_base_unit;

        typedef boost::units::make_system<millimeter_base_unit>::type system;
        typedef boost::units::unit<boost::units::length_dimension, system> length;

        BOOST_UNITS_STATIC_CONSTANT(millimeter, length);
        BOOST_UNITS_STATIC_CONSTANT(millimeters, length);
    }

    typedef boost::units::quantity<millimeter_system::length> quantity_millimeter;
    using millimeter_system::millimeter;
    using millimeter_system::millimeters;
}

// demonstration of usage
void foo() {
    using namespace outernamespace;
    using namespace boost::units;
    using namespace boost::units::si;

    quantity_millimeter mm = 5 * millimeter;
    quantity<boost::units::si::length> m = 0.004 * meter;
    if (mm < static_cast<quantity_millimeter>(m)) {
        std::cout << 'lt ' << std::endl;
    }
    else {
        std::cout << 'geq ' << std::endl;
    }
}

这篇关于毫米的boost ::单位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆