我试图将米和毫米分配给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;
我该怎么做(或者至少让代码更容易)?
答案 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