簡體   English   中英

將boost :: units :: make_scaled_unit與liter_base_unit一起使用時,為什么會出現編譯錯誤?

[英]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_unitboost::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM