[KUnitConversion] Question about overloading operators

Albert Astals Cid aacid at kde.org
Fri Dec 2 22:25:11 UTC 2016


El dimecres, 23 de novembre de 2016, a les 9:00:10 CET, Ander Pijoan va 
escriure:
> So would it be to hamrfull to add at least this four operators? At the
> moment just allowing same Unit values. You mentioned that using Q_ASSERT is
> not a good idea, maybe there is another way of ensuring they have the same
> unit.
> 
> Value operator +(const Value &other) {
> Q_ASSERT( this->unit() == other.unit() );
> return Value( this->number() + other.number() , this->unit() );
> }
> 
> Value operator -(const Value &other) {
> Q_ASSERT( this->unit() == other.unit() );
> return Value( this->number() - other.number() , this->unit() );
> }
> 
> Value operator *(const double v) {
> return Value( this->number() * v , this->unit() );
> }
> 
> Value operator /(const double v) {
> return Value( this->number() / v , this->unit() );
> }
> 
> I think, this four operators could be really usefull and are pretty simple.

As said i would really appreciate if you would try to use 
KUnitConversion::Converter instead of asserting.

Anyhow i'm not the maintainer so i can't block.

Anyhow2 you should propose a patch in reviewboard if you want to get proper 
patch discussion.

Cheers,
  Albert

> 
> 2016-11-21 22:59 GMT+01:00 Albert Astals Cid <aacid at kde.org>:
> > 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