2013-07-08 22 views
1

我想在我的代碼中使用boost :: units來定義類型RoundsPerMinute。不過,我並不真正瞭解如何做到這一點。Boost:rpm的typedef

我已經通過

using boost::units::si::seconds; 

typedef boost::units::make_scaled_unit < boost::units::si::time, boost::units::scale<60, boost::units::static_rational<1> > >::type minute; 
BOOST_UNITS_STATIC_CONSTANT(minutes, minute); 

typedef boost::units::quantity<minute, float> Minute; 

定義一分鐘,現在可以做如

Minute m = 5*minutes; 

我現在想什麼做的是沿着

RoundsPerMinute rpm1 = 50 * rpm; 
RoundsPerMinute rpm2 = 100/(2*minutes); 
Minute m = 1/rpm2; // how many minutes does it take for one round? 

線的東西,但我不知道如何定義這些類型 - 坦率地說整個升壓文檔是太多技術爲我瞭解:-(如果有人能幫助我的定義,這將是巨大的

回答

2

一個RPM只是1/60赫茲 - 見boost::units::si::hertz

+0

感謝您指出我與H ž。我試圖使用它,它似乎適用於基本的東西。但是,我不應該能夠做1 /赫茲來獲得一次迭代所需的時間嗎?這與未知的運營商/失敗。 – Frankie

+0

@Frankie:這沒有道理。你做'1 /變量'來獲得另一個變量。但赫茲是一種類型(正如RPM一樣,都是頻率類型)。 – MSalters

+0

當然我的意思是 boost :: units :: quantity freq = 2 * hertz; boost :: units :: quantity sec = 1/freq; 我期望得到sec.value()== 0.5。 – Frankie