From 095419a1f81f40da681373ac57e765fffcad8d4b Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sat, 28 Oct 2023 03:43:33 +0200 Subject: [PATCH] fix all memory management issues by copying references BUT still deleting object when RunProject die --- src/Projet.cpp | 9 ++------- src/RunProjet.cpp | 14 ++++++-------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/Projet.cpp b/src/Projet.cpp index 9ced0d5..462fb88 100644 --- a/src/Projet.cpp +++ b/src/Projet.cpp @@ -13,16 +13,11 @@ void Projet::_copy(const Projet &src) { // Copie des tâches taches.reserve(src.taches.size()); for (Tache *t : src.taches) { - taches.push_back(new Tache(*t)); + taches.push_back(t); } } -void Projet::free_taches() { - for (Tache *it : taches) { - delete it; - } - taches.clear(); -} +void Projet::free_taches() { taches.clear(); } Projet::Projet(const Projet &src) : debut(src.debut), fin(src.fin) { _copy(src); diff --git a/src/RunProjet.cpp b/src/RunProjet.cpp index 7dd5cd4..aec3244 100644 --- a/src/RunProjet.cpp +++ b/src/RunProjet.cpp @@ -1,16 +1,14 @@ #include "../includes/RunProjet.hpp" -RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { - // TODO: Ici on COPIE les tâches de ProtoProjet au lieu de juste prendre les - // références et les retirer de sa liste - // Il faudrait que l'on trouve un moyen que ça n'arrive pas pour éviter une - // copie inutile +RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { src.free_taches(); } - src.free_taches(); +RunProjet::~RunProjet() { + // Ici on veut supprimes les tâches + for (Tache *it : taches) { + delete it; + } } -RunProjet::~RunProjet() {} - RunProjet::RunProjet(const RunProjet &src) : ProtoProjet(src) {} const RunProjet &RunProjet::operator=(const RunProjet &src) {