Повышение кастинга :: юниты :: количество удваивается

Мне нужно передать значение количества в библиотеку для оценки. библиотека бустеров принимает двойные значения в СИ, поэтому библиотека блоков повышения очень привлекательна для обеспечения этого требования. Однако как я должен привести количество к двойному значению? Документация и пример, кажется, избегают этого, так как цель состоит в том, чтобы по праву поддерживать единицы.

Что-то вроде:

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

Просматривая заголовки, можно предположить … Это правильный способ приведения к базовому типу?

p.value();

6

Решение

справочная документация показывает, что либо неявное приведение или value() член метод может быть использован.

  1. operator value_type() const;

    неявное преобразование в value_type разрешено

  2. const value_type & value() const;

    постоянный доступ к значению

3

Другие решения

Я думаю, что вы ищете это:

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

Если вы разделите блок, у вас останется quantity<dimensionless> который неявно преобразуется в double, Это устраняет любой вопрос о том, что такое внутреннее представление (которое value() возвращается) единицы есть.

8

Просто заметил это. Я думаю, что предполагаемый метод заключается в использовании Boost’s quantity_cast оператор.

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

4
По вопросам рекламы [email protected]