![](/img/trans.png)
[英]How do I find a volume with scaled_unit and si::unit with boost::units?
[英]Why do I get a compilation error when using boost::units::make_scaled_unit with liter_base_unit?
我想使用Boost.Units表示以克/毫升表示的數量。 我正在嘗試將單位定義為“毫升”。 如果我寫
typedef boost::units::make_scaled_unit<
boost::units::si::volume,
boost::units::scale<10, boost::units::static_rational<-3> >
>::type liter;
typedef boost::units::make_scaled_unit<
liter,
boost::units::scale<10, boost::units::static_rational<-3> >
>::type milliliter;
代碼可以正常編譯,但是如果我用boost::units::metric::liter_base_unit
替換自己的liter
,則milliliter
定義將無法在struct boost :: units :: make_scaled_unit中使用“ no type'type”的類型進行編譯”錯誤。 您能解釋一下為什么嗎? make_scaled_unit
中的單位可以是基本單位,還是需要從boost::units::metric::liter_base_unit
制作派生單位?
我找到了解決方案。 正如我所建議的,問題是make_scaled_unit
中的單位必須是單位類型,而不是基本單位。 通過將boost::units::metric::liter_base_unit
為boost::units::metric::liter_base_unit::unit_type
,它可以工作。
代碼變為:
typedef boost::units::make_scaled_unit<
boost::units::metric::liter_base_unit::unit_type,
boost::units::scale<10, boost::units::static_rational<-3> >
>::type milliliter;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.