如何将米和毫米分配给相同的boost :: units变量?

时间:2014-10-09 00:52:07

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

我试图将米和毫米分配给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;

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

1 个答案:

答案 0 :(得分:0)

您应该加入<boost/units/systems/si/prefixes.hpp>。 它允许您使用前缀:

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