fix all memory management issues by copying references BUT still deleting object when RunProject die
This commit is contained in:
parent
9ebf1af816
commit
095419a1f8
2 changed files with 8 additions and 15 deletions
|
@ -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);
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
#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) {}
|
||||||
|
|
||||||
|
|
Reference in a new issue