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

如何将米和毫米分配给同一boost::units变量?,boost,implicit-conversion,prefix,units-of-measurement,Boost,Implicit Conversion,Prefix,Units Of Measurement,我试图将米和毫米分配给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>

我试图将米和毫米分配给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);
boost::units::quantity lenA=2.0*boost::units::si::meters;
boost::units::quantity lenB=静态_cast(2.0*boost::units::si::milli*boost::units::si::meters);
(使用静态施法)但我想放弃施法,只使用

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::units::quantity lenA=2.0*boost::units::si::meters;
boost::units::quantity lenB=2.0*boost::units::si::milli*boost::units::si::meters;
我如何做到这一点(或者至少使编码更容易)?

您应该包括
。 它将允许您使用前缀:

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

什么是
跟踪::单位::长度
?顺便说一句,如果你想要一些“更容易编码”的东西,也许可以用int64毫米作为标准单位。任何事情都比这容易!这有用吗?另外,与FAQ条目相关
#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