
On Jan 12, 2009, at 4:23 PM, Steven Watanabe wrote:
AMDG
Mark Volkmann wrote:
Okay, I've looked at the code related to conversions. conversion_factor.cpp sets up a bunch of double values that I assume are used to convert values in one unit to values in another. However, they aren't used in any code.
conversion_factor isn't used for conversions. It just returns the value that would be used for a conversion.
I thought that was the case. However, I haven't yet worked out how to create a conversion_factor for miles to kilometers. That should be just a few lines I think. Here's what I tried:
#include
... #typedef bu::us::mile_base_unit::unit_type mile; ... double kilometer = 1000 * si::meter; double mile_to_km = conversion_factor(mile, kilometer); That last line doesn't compile. Do you see what I'm doing wrong?
Only the last line fails? The only line of that which should compile is the #include.
conversion_factor return the conversion between two different units. kilometer in your example is not a unit.
#include
double mile_to_km = conversion_factor(mile(), si::kilo*si::meter);
http://www.boost.org/doc/html/boost_units/Examples.html#boost_units.Examples... The example uses SI and CGS, but converting between any units is similar.
Thanks. I've read that page several times already and still don't get it. I suspect my lack of experience with C++ templates is the issue. I see this:
<snip>
However, I don't know what to specify in place of cgs::length in order to use miles instead of centimeters.
I wish that page contained an example of converting from some U.S. unit (such as miles) to some SI unit (such as meters).
The first template argument of quantity<> is supposed to be a unit. Once you have the correct quantity/unit types conversions are easy.
typedef bu::us::mile_base_unit::unit_type mile;
quantity<mile> m(5.90e4 * si::meters);
Oh my goodness, I actually have working code now demonstrating two ways to perform conversions! Thanks! // Convert miles to kilometers. double mile_to_km = conversion_factor(mile(), si::kilo*si::meter); cout << mile_to_km << std::endl; double marathonMiles = 26.2; double marathonKMs = marathonMiles * mile_to_km; cout << "marathonKMs = " << marathonKMs << endl; // Convert kilometers to miles. quantity<mile> miles(10 * si::kilo * si::meter); cout << "10K miles = " << miles.value() << endl; --- Mark Volkmann