[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