Attualmente sto usando boost :: units per rappresentare la coppia in unità si, tuttavia mi viene data la coppia in piedi libbra. Sto tentando in tal modo di creare un'unità di coppia di torsione e una conversione per supportare questo. Il mio tentativo pigro era quello di definire semplicemente:Come aggiungere la propria unità base e le conversioni usando boost :: units
BOOST_STATIC_CONST(boost::si::torque, pound_feet = 1.3558179483314 * si::newton_meters);
E poi fare:
boost::si::torque torque = some_value * pound_feet;
Ma questo si sente insoddisfacente. Il mio secondo tentativo è stato quello di tentare di definire una nuova unità base chiamata pound_foot (vedi sotto). Ma quando provo ad usarlo in un modo simile a quello sopra (con un cast per l'unità si) ottengo una pagina piena di errori. Qualche suggerimento sull'approccio corretto?
namespace us {
struct pound_foot_base_unit : base_unit<pound_foot_base_unit, torque_dimension> { };
typedef units::make_system<
pound_foot_base_unit>::type us_system;
typedef unit<torque_dimension, us_system> torque;
BOOST_UNITS_STATIC_CONSTANT(pound_foot, torque);
BOOST_UNITS_STATIC_CONSTANT(pound_feet, torque);
}
BOOST_UNITS_DEFINE_CONVERSION_FACTOR(us::torque,
boost::units::si::torque,
double, 1.3558179483314);
Funziona come un incantesimo - grazie. –