2013-10-16 7 views
14

Sto lavorando a un progetto software in cui mi piacerebbe sfruttare Boost.Units. Alcune delle unità che vorrei utilizzare rappresentano il tempo, tuttavia, sono propenso a utilizzare le unità C++ 11 std::chrono per quelle da quando sono standard.std :: chrono & Boost.Units

Mi chiedo se ci sia un'integrazione pulita tra Boost.Units e chrono o se devo ricorrere a scrivere i miei convertitori e perdere la sicurezza del tipo semplicemente copiando i valori scalari tra i tipi.

Esistono buone pratiche per questo problema?

+2

Recentemente ho iniziato a lavorare con 'boost :: units'. AFAICT non esiste alcuna relazione con il tempo o 'boost :: chrono' lì. Penso che i concetti alla base di 'boost :: units' e' boost :: chrono' differiscano troppo. Comunque potresti dare un'occhiata a: boost :: date_time' che costruisce (.. o re-implements) 'std :: chrono'. Lì troverai una miriade di classi che trattano ogni aspetto pensabile del tempo. – user23573

+0

Forse avvolgere lo scalare in una nuova classe, oscurando così lo scalare fornendo al contempo funzioni 'getAs [Tipo]'? Un punto di fallimento è meglio di molti. – Conduit

+0

Per quelli che vengono qui la seguente domanda è rilevante, ma leggermente diversa: https://stackoverflow.com/questions/4910373/interoperability-between-boostdate-time-and-stdchrono –

risposta

0

Questa potrebbe non essere una risposta perfetta, ma boost :: chrono fornisce un esempio di come integrarlo con un sistema di unità definito in example itself (devel) (version at time of writing).

Essenzialmente, in base allo boost.units examples for quaternion and complex numbers dovrebbe essere possibile definire le stesse funzioni per le unità std :: chrono, anche se potrebbe richiedere un codice aggiuntivo per le nuove unità definite dall'utente.

C'è anche un simile, sebbene leggermente diverso, question regarding boost::date_time che può anche avere informazioni utili.

Spiacente, questa non è una risposta completa, ma forse sarà un inizio che qualcun altro può completare!