6

評価のために、数量の値をライブラリに渡す必要があります。ブーストユニットライブラリはSIで2倍の値を取るため、ブーストユニットライブラリはその要件を確実にする上で非常に魅力的です。ただし、数量をdouble値にキャストするにはどうすればよいですか?ドキュメントと例は、当然のことながらユニットを維持することを目的としているため、これを回避しているようです。

何かのようなもの:

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = static_cast<double>(p);  // double value in Pascals 

ヘッダーを確認すると、次のようになります...基本タイプにキャストする正しい方法ですか?

p.value();
4

3 に答える 3

9

私はあなたが探しているのはこれだと思います:

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = p / pascals;  // double value in Pascals 

ユニットを分割すると、quantity<dimensionless>暗黙的にに変換されるaが残りますdouble。これにより、(value()返される)内部表現の単位が何であるかという疑問がなくなります。

于 2013-11-11T22:19:57.670 に答える
7

ちょうどこれを見つけました。quantity_cast意図した方法はBoostの演算子を使用することだと思います。

quantity<pressure> p(101.1 * kilo * pascals);
double dblP = quantity_cast<double>(p);

http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units/Quantities.html#boost_units.Quantities.Quantity_Construction_and_Conversion

于 2014-02-09T12:59:55.223 に答える
4

リファレンスドキュメントには、暗黙的なキャストまたはメンバーメソッドのいずれかを使用value()できることが示されています。

  1. operator value_type() const;

    value_typeへの暗黙的な変換が許可されます

  2. const value_type & value() const;

    値への一定のアクセサー

于 2012-12-18T16:54:49.040 に答える