如何将米和毫米分配给相同的boost :: units变量?
问题描述:
我想分配米和毫米来提升::单位变量。但是,似乎boost ::单位不容易从毫米转换为米。 我正在使用的代码是如何将米和毫米分配给相同的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/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
什么是'跟踪::单位:: Length'?顺便说一下,如果你想要“更容易编码”,也许只需要使用int64_t毫米作为你的标准单位或其他东西。任何事情都会比这更容易! – 2014-10-09 00:56:56
这有帮助吗? http://*.com/questions/14724063/millimeters-in-boostunits – sehe 2014-10-09 09:13:20
另外,与FAQ条目http://www.boost.org/doc/libs/1_56_0/doc/html/boost_units/FAQ.html# boost_units.FAQ.NoConstructorFromValueType – sehe 2014-10-09 09:19:38