codice:
double getDistance(const Point &P1) const
{
return sqrt(pow(P1.getX(), 2) + pow(P1.getY(), 2));
}
double getDistance(const Point &P1, const Point &P2) const
{
return sqrt(pow(P1.getX() - P2.getX(), 2) + pow(P1.getY() - P2.getY(), 2));
}
Queste due funzioni le puoi trasformare in una sola, facendo così:
codice:
static Point Point::Zero()
{
return Point(0,0);
}
double getDistance(const Point &P1, const Point &P2 = Point::Zero) const
{
return sqrt(pow(P1.getX() - P2.getX(), 2) + pow(P1.getY() - P2.getY(), 2));
}
In questo modo se non specifichi il secondo punto va in default all'origine, e quindi ti da il risultato della prima.
In più, dovresti aggiungere virtual al distruttore: se non metti virtual succede panico e morte quando derivi la classe.