[KUnitConversion] Question about overloading operators

Albert Astals Cid aacid at kde.org
Mon Nov 21 21:59:30 UTC 2016


El dilluns, 21 de novembre de 2016, a les 18:00:18 CET, Christoph Feck va 
escriure:
> On 21.11.2016 08:27, Ander Pijoan wrote:
> > Value operator +(const Value &other)
> > {
> > 
> >       Q_ASSERT( unit() == other.unit() );
> >       return Value(  number() + other.number() , unit()  );
> > 
> > }
> 
> So when adding "3 m" and "40 cm" you want to have an assert (that isn't
> compiled into code unless you are in debug builds)?
> 
> Also, for multiplication, you would need to add all relationships
> between units, so that "40 mph" * "30 min" would result in "20 miles".
> 
> This is especially problematic for temporary units, e.g. "40 kg" * "20
> m/s" * "30 Hz" should have a "Newton" unit result, but just multiplying
> mass and speed has no unit assigned in KUnitConversion.

We have a InvalidUnit, you can always default to that for stuff "you don't 
know".

Cheers,
  Albert



More information about the Kde-frameworks-devel mailing list