boost.units中单位的转换因子

时间:2017-09-20 16:01:34

标签: c++ boost boost-units

我刚刚开始使用boost-units,我试图理解我应该编写什么代码来获得单位之间的转换因子。在Runtime Units Example之后,我设法获得了base_units所需的内容。

例如,对于长度,我可以轻松地将转换因子从英寸变为米,如下所示:

conversion_factor(imperial::inch_base_unit::unit_type(), si::meter_base_unit::unit_type())

这最终允许我根据需要定义尽可能多的缩放单位,并获得所有需要的转换因子。

在速度的情况下,例如,在相关标题中声明为“meter_per_second”单位,我无法弄清楚如何检索转换因子以将其转换为kmh或mph。我想我需要定义自己的mph单位,这需要定义(或检索)里程和小时的定义,并将它们放在一起。

我怎么能达到预期的效果?

1 个答案:

答案 0 :(得分:1)

我设法在Boost-users邮件列表存档(here)中找到相关示例

#include <boost/units/base_units/us/mile.hpp>
#include <boost/units/base_units/metric/hour.hpp>

typedef boost::units::us::mile_base_unit::unit_type mile_unit;
typedef boost::units::metric::hour_base_unit::unit_type hour_unit;

typedef boost::units::divide_typeof_helper<mile_unit, hour_unit>::type miles_per_hour;

正确声明单位后,可以调用 conversion_factor 函数来获取我需要的内容。