【问题标题】:How do I assign both metres and millimetres to same boost::units variable?如何将米和毫米分配给相同的 boost::units 变量?
【发布时间】:2014-12-03 19:26:03
【问题描述】:

我正在尝试将米和毫米都分配给 boost::units 变量。但是,似乎 boost::units 不容易从毫米转换为米。 我使用的代码是

boost::units::quantity<boost::units::si::length> lenA = 2.0 * boost::units::si::metres;
boost::units::quantity<boost::units::si::length> lenB = static_cast<tracking::units::Length>(2.0 * boost::units::si::milli * boost::units::si::metres);

(使用 static_cast)但我想放弃演员表并使用

boost::units::quantity<boost::units::si::length> lenA = 2.0 * boost::units::si::metres;
boost::units::quantity<boost::units::si::length> lenB = 2.0 * boost::units::si::milli * boost::units::si::metres;

我该怎么做(或者至少让编码更容易)?

【问题讨论】:

标签: boost implicit-conversion prefix units-of-measurement


【解决方案1】:

您应该包括&lt;boost/units/systems/si/prefixes.hpp&gt;。 它将允许您使用前缀:

quantity<length> len2(2.0 * milli * meter);

示例代码:

#include <stdlib.h>
#include <string>
#include <iostream>
#include <boost/units/systems/si/prefixes.hpp>
#include <boost/units/systems/si/length.hpp>
#include <boost/units/systems/si/io.hpp>

using namespace std;
using namespace boost::units;
using namespace boost::units::si;
using namespace boost;

int main(int argc, char* argv[]) {

  quantity<length> len1(2.0 * meter);
  quantity<length> len2(2.0 * milli * meter);
  quantity<length> len3(2.0 * centi * meter);

  cout << len1 << endl << len2 << endl << len3 << endl;

  return EXIT_SUCCESS;
}

结果是:

2 m
0.002 m
0.02 m

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多