[PQ] Add unary minus operator

This commit is contained in:
Lars Toenning
2020-07-16 18:37:13 +02:00
parent 74db25ddfc
commit 368dd1f46d
3 changed files with 17 additions and 0 deletions

View File

@@ -237,6 +237,14 @@ namespace BlackMisc
return copy; return copy;
} }
template <class MU, class PQ>
PQ CPhysicalQuantity<MU, PQ>::operator -() const
{
PQ copy = *derived();
copy *= -1;
return copy;
}
template <class MU, class PQ> template <class MU, class PQ>
bool CPhysicalQuantity<MU, PQ>::lessThan(const CPhysicalQuantity<MU, PQ> &other) const bool CPhysicalQuantity<MU, PQ>::lessThan(const CPhysicalQuantity<MU, PQ> &other) const
{ {

View File

@@ -165,6 +165,9 @@ namespace BlackMisc
//! Operator / //! Operator /
PQ operator /(double divide) const; PQ operator /(double divide) const;
//! Unary operator -
PQ operator -() const;
//! Equal operator == //! Equal operator ==
friend bool operator==(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return a.equals(b); } friend bool operator==(const CPhysicalQuantity &a, const CPhysicalQuantity &b) { return a.equals(b); }

View File

@@ -97,6 +97,12 @@ namespace BlackMiscTest
CFrequencyUnit fu1 = CFrequencyUnit::Hz(); CFrequencyUnit fu1 = CFrequencyUnit::Hz();
QVERIFY2(fu1 != du1, "Hz must not be meter"); QVERIFY2(fu1 != du1, "Hz must not be meter");
// Unary expressions
CTemperature temp1(5, CTemperatureUnit::C());
QVERIFY2(-temp1 == CTemperature(-5, CTemperatureUnit::C()), "Temperatures must be the same");
CTemperature temp2(-8.7, CTemperatureUnit::K());
QVERIFY2(-temp2 == CTemperature(8.7, CTemperatureUnit::K()), "Temperatures must be the same");
// null comparisons // null comparisons
const CLength null(CLength::null()); const CLength null(CLength::null());
const CLength nonNull(1, CLengthUnit::m()); const CLength nonNull(1, CLengthUnit::m());