C++ 混合比例单位和衍生单位un boost::单位

C++ 混合比例单位和衍生单位un boost::单位,c++,boost-units,C++,Boost Units,我想在项目中使用boost::units来使用量纲分析和单元系统之间的自动转换。我想用标准工程单位表示代码中的数量,这些单位通常是其他单位的缩放版本。让我用一个例子来解释这一点。 假设我定义以下系统 typedef make_system< us::foot_base_unit, us::pound_base_unit, si::second_base_unit>::type my_system; BOOST_UNITS_STATIC_CONSTANT(fe

我想在项目中使用
boost::units
来使用量纲分析和单元系统之间的自动转换。我想用标准工程单位表示代码中的数量,这些单位通常是其他单位的缩放版本。让我用一个例子来解释这一点。 假设我定义以下系统

typedef make_system<
    us::foot_base_unit,
    us::pound_base_unit,
    si::second_base_unit>::type my_system;

BOOST_UNITS_STATIC_CONSTANT(feet,length);

BOOST_UNITS_STATIC_CONSTANT(pound,mass);
没有问题。但是当我试着像这样使用比例单位时:

poundForce poundForceInst;
quantity<field::poundForce> f2 = 1*poundForceInst;
quantity<field::force> f3 = f2;
poundForce-poundForceInst;
数量f2=1*磅力;
数量f3=f2;
编译失败,出现“无可行的转换错误”。我认为缩放单位的意义在于自动进行这些转换。而且文档让我觉得我只需要定义name_string和symbol_string就可以打印磅力的数量,但是

std::cout << "f2 = " << f2 << std::endl;

std::我能算出数量f3(1*poundForceInst);工作,但转换属性也应该工作,如手册所述:1)如果Unit1和Unit2具有相同的维度,并且Y和Z可以隐式转换,则允许在数量和数量之间进行显式转换。2) 如果单位1减少到与单位2完全相同的基本单位组合,并且Y和Z可转换,则允许在数量和数量之间进行隐式转换。您是否解决了自定义名称和符号编译问题?我有一个非常相似的情况,我不能让符号字符串重载工作。。。
std::cout << "f2 = " << f2 << std::endl;
typedef make_system<
    us::foot_base_unit,
    us::pound_force_base_unit,
    si::second_base_unit>::type my_system;