2013-10-02 40 views
1

我想使用Boost.Units來表示以毫克爲單位的數量。我試圖將單位定義爲「毫升」。如果我寫爲什麼我在使用boost :: units :: make_scaled_unit和liter_base_unit時遇到編譯錯誤?

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; 

代碼編譯罰款,但如果我代替我自己literboost::units::metric::liter_base_unit,然後則milliliter定義失敗,出現「無型結構的boost ::單位命名爲‘類型’編譯:: make_scaled_unit「錯誤。 你能解釋我爲什麼嗎? make_scaled_unit中的單位可以作爲基本單位還是我需要從boost::units::metric::liter_base_unit製作派生單位?

回答

2

我找到了解決方案。正如我所建議的那樣,問題在於make_scaled_unit中的設備必須是單元類型,而不是基本單元。通過用boost::units::metric::liter_base_unit::unit_type代替boost::units::metric::liter_base_unit,它可以工作。

的代碼變爲:

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; 
相關問題