Ce que dit PilloBuenaGente : tu ne peux pas tester deux nombres flottants directement avec == car il faudrait être sur que la "précision" (tous les chiffres significatifs plus exactement) entre ces deux flottants sont identiques.
PilloBuenaGente te suggère de comparer tes flottants à epsilon près. Par exemple :
if (std::abs(a - b) <= 0.000001) // On considère que 1 et 1.000001 sont identiques
Pour vérifier la valeur des flottants, je te conseille de les afficher dans la fonction rectangle pour débugger.
1 2
| std::cout.precision(std::numeric_limits<float>::digits10+1); // Permet d'afficher un flottant avec toute sa précision
std::cout << un_float; |
Sinon, j'aimerais attirer ton attention sur ta classe Point2D et plus précisément sur l'utilité des getteurs et des setteurs. Quelle(s) vérification(s) fais-tu dans les setteurs ?
L'opérateur d'affectation = (et le constructeur par copie) sont générés par défaut ici; on a donc le droit d'écrire Point2D p(1, 2); p = Point2D(-1, -2); et cela va modifier notre point sans passer dans le setteur (selon comment tu as écrit ton constructeur).
Bref, je pense que les getteurs et les setteurs ne sont pas justifiés et que x et y devraient être des membres publics.
Partager