fix all memory management issues by copying references BUT still deleting object when RunProject die

This commit is contained in:
Mylloon 2023-10-28 03:43:33 +02:00
parent 9ebf1af816
commit 095419a1f8
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 8 additions and 15 deletions

View file

@ -13,16 +13,11 @@ void Projet::_copy(const Projet &src) {
// Copie des tâches // Copie des tâches
taches.reserve(src.taches.size()); taches.reserve(src.taches.size());
for (Tache *t : src.taches) { for (Tache *t : src.taches) {
taches.push_back(new Tache(*t)); taches.push_back(t);
} }
} }
void Projet::free_taches() { void Projet::free_taches() { taches.clear(); }
for (Tache *it : taches) {
delete it;
}
taches.clear();
}
Projet::Projet(const Projet &src) : debut(src.debut), fin(src.fin) { Projet::Projet(const Projet &src) : debut(src.debut), fin(src.fin) {
_copy(src); _copy(src);

View file

@ -1,16 +1,14 @@
#include "../includes/RunProjet.hpp" #include "../includes/RunProjet.hpp"
RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { RunProjet::RunProjet(ProtoProjet &src) : ProtoProjet(src) { src.free_taches(); }
// 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
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) {} RunProjet::RunProjet(const RunProjet &src) : ProtoProjet(src) {}
const RunProjet &RunProjet::operator=(const RunProjet &src) { const RunProjet &RunProjet::operator=(const RunProjet &src) {