Как правильно определить производную единицу в Boost Unit

Я пытаюсь создать derived_dimension в boost::units для массового расхода для si система. Я не могу найти документацию о том, как сделать эту простую задачу. Это то, что у меня есть, но я получаю ошибки во время компиляции.

typedef boost::units::derived_dimension<
boost::units::mass_base_dimension, 3,
boost::units::time_base_dimension, -1
>::type mass_flow_rate_dimension;

typedef boost::units::unit<
mass_flow_rate_dimension,
boost::units::si::system
> mass_flow_rate_unit;

typedef boost::units::quantity<mass_flow_rate_unit, double> mass_flow_rate;

BOOST_UNITS_STATIC_CONSTANT(kilogram_per_seconds, mass_flow_rate);

Вот как я получаю ошибку:

mass_flow_rate MFR;
quantity<mass_density> density = 1.0 * kilogram_per_cubic_meter;
quantity<si::time> Time = 1.0 * second;
quantity<volume> vol = 1.0 * cubic_meters;
MFR = density * vol / Time;

ошибка: C2338 (is_simply_convertible::value == true)

1 ответ

Решение

mass_flow_rate_dimension имеет неправильные размеры. У вас масса к третьему вместо массы

typedef boost::units::derived_dimension<
boost::units::mass_base_dimension, 1,
boost::units::time_base_dimension, -1
>::type mass_flow_rate_dimension;

Исправляет это. Эта ошибка предназначена только для случая, когда ваши размеры не совпадают.

Другие вопросы по тегам