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 <aa...@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