Virtual destructor for polymorphic classes, const correctness, removed virtual method call in constructor

This commit is contained in:
Klaus Basan
2013-03-24 17:15:08 +01:00
parent 3b99954bdc
commit b3439ea3e4
18 changed files with 320 additions and 183 deletions

View File

@@ -9,6 +9,13 @@ namespace BlackMisc {
* \author KWB
*/
class CMassUnit : public CMeasurementUnit {
friend class CMass;
private:
/*!
* Downcast copy constructor, allows to implement methods in base class
* \param otherUnit
*/
CMassUnit(const CMeasurementUnit &otherUnit) : CMeasurementUnit(otherUnit) {}
public:
/*!
* Constructor
@@ -24,31 +31,26 @@ public:
*/
CMassUnit(const QString &name, const QString &unitName, bool isSIUnit, bool isSIBaseUnit, double conversionFactorToSI = 1.0, const CMeasurementPrefix &mulitplier = CMeasurementPrefix::One(), qint32 displayDigits = 2, double epsilon = 1E-9) :
CMeasurementUnit(name, unitName, "mass", isSIUnit, isSIBaseUnit, conversionFactorToSI, mulitplier, displayDigits, epsilon) {}
/*!
* Downcast copy constructor, allows to implement methods in base class
* \param otherUnit
*/
CMassUnit(const CMeasurementUnit &otherUnit) : CMeasurementUnit(otherUnit) {}
/*!
* \brief Kilogram, SI base unit
* \return
*/
static CMassUnit& kg() { static CMassUnit kg("kilogram", "kg", true, true, 1.0, CMeasurementPrefix::k(), 1); return kg;}
static const CMassUnit& kg() { static CMassUnit kg("kilogram", "kg", true, true, 1.0, CMeasurementPrefix::k(), 1); return kg;}
/*!
* \brief Gram, SI unit
* \return
*/
static CMassUnit& g() { static CMassUnit g("gram", "g", true, false, 1.0/1000.0, CMeasurementPrefix::One(), 0); return g;}
static const CMassUnit& g() { static CMassUnit g("gram", "g", true, false, 1.0/1000.0, CMeasurementPrefix::One(), 0); return g;}
/*!
* \brief Tonne, aka metric tonne (1000kg)
* \return
*/
static CMassUnit& t() { static CMassUnit t("tonne", "t", true, false, 1000.0, CMeasurementPrefix::One(), 3); return t;}
static const CMassUnit& t() { static CMassUnit t("tonne", "t", true, false, 1000.0, CMeasurementPrefix::One(), 3); return t;}
/*!
* \brief Pound, aka mass pound
* \return
*/
static CMassUnit& lb() { static CMassUnit lbs("pound", "lb", false, false, 0.45359237, CMeasurementPrefix::One(), 1); return lbs;}
static const CMassUnit& lb() { static CMassUnit lbs("pound", "lb", false, false, 0.45359237, CMeasurementPrefix::One(), 1); return lbs;}
};
/*!
@@ -62,10 +64,6 @@ public:
* \brief Default constructor
*/
CMass();
/**
*\brief downcast copy constructor
*/
CMass(const CPhysicalQuantity &mass);
/*!
* \brief Init by int value
* \param value
@@ -78,16 +76,25 @@ public:
* \param unit
*/
CMass(double value, const CMassUnit &unit = CMassUnit::kg());
/*!
* \brief Copyconstructor
* \param mass
*/
CMass(const CPhysicalQuantity &mass);
/*!
* \brief Virtual destructor
*/
virtual ~CMass();
/*!
* \brief Unit of the mass
* \return
*/
CMassUnit getUnit() const { return this->_unit; }
CMassUnit getUnit() const { return this->_pUnit; }
/*!
* \brief Conversion SI unit
* \return
*/
CMassUnit getConversionSiUnit() const { return this->_conversionSiUnit; }
CMassUnit getConversionSiUnit() const { return this->_pConversionSiUnit; }
};
} // namespace blackCore