diff --git a/Algo/tp/Cpp/3_tp/obj/passager.o b/Algo/tp/Cpp/3_tp/obj/passager.o new file mode 100644 index 0000000..9e8ada8 Binary files /dev/null and b/Algo/tp/Cpp/3_tp/obj/passager.o differ diff --git a/Algo/tp/Cpp/3_tp/obj/test.o b/Algo/tp/Cpp/3_tp/obj/test.o new file mode 100644 index 0000000..e43c411 Binary files /dev/null and b/Algo/tp/Cpp/3_tp/obj/test.o differ diff --git a/Algo/tp/Cpp/3_tp/obj/train.o b/Algo/tp/Cpp/3_tp/obj/train.o new file mode 100644 index 0000000..0a7e044 Binary files /dev/null and b/Algo/tp/Cpp/3_tp/obj/train.o differ diff --git a/Algo/tp/Cpp/3_tp/src/passager.cpp b/Algo/tp/Cpp/3_tp/src/passager.cpp index c4582f0..54d9298 100644 --- a/Algo/tp/Cpp/3_tp/src/passager.cpp +++ b/Algo/tp/Cpp/3_tp/src/passager.cpp @@ -1,4 +1,5 @@ #include "passager.hpp" +#include "wagon.hpp" #include #include @@ -12,5 +13,8 @@ Wagon Passager::getWagonActuel() const { return *wagonActuel; } - +ostream &operator<<(ostream &s, const Passager &p) { + s << "Passager : " << p.nom << p.prenom << endl; + return s; +} diff --git a/Algo/tp/Cpp/3_tp/src/passager.hpp b/Algo/tp/Cpp/3_tp/src/passager.hpp index 1df41e5..1293cce 100644 --- a/Algo/tp/Cpp/3_tp/src/passager.hpp +++ b/Algo/tp/Cpp/3_tp/src/passager.hpp @@ -2,7 +2,8 @@ #define PASSAGER_HPP #include -#include "wagon.hpp" + +class Wagon; class Passager { private : @@ -20,6 +21,7 @@ public : friend std::ostream &operator<<(std::ostream &s, const Passager &p); + ~Passager(); }; diff --git a/Algo/tp/Cpp/3_tp/src/test.cpp b/Algo/tp/Cpp/3_tp/src/test.cpp index 541572e..1c3ce73 100644 --- a/Algo/tp/Cpp/3_tp/src/test.cpp +++ b/Algo/tp/Cpp/3_tp/src/test.cpp @@ -8,19 +8,19 @@ using namespace std; void testPassager(void) { - Passager lePassager("Passager 1", "Prenom 1"); - cout << lePassager.getNom() << endl; + Passager lePassager("Nom", "Prenom"); + cout << lePassager << endl; } void testWagon(void) { - Wagon leWagon("Wagon 1"); - cout << leWagon.getNom() << endl; + Wagon leWagon(1); + cout << leWagon << endl; } -void testTrain(void) { - Train leTrain("Train 1"); - cout << leTrain.getNom() << endl; -} +// void testTrain(void) { +// Train leTrain("Train 1"); +// cout << leTrain.getNom() << endl; +// } int main() { testPassager(); diff --git a/Algo/tp/Cpp/3_tp/src/wagon.cpp b/Algo/tp/Cpp/3_tp/src/wagon.cpp index a6c853b..84defeb 100644 --- a/Algo/tp/Cpp/3_tp/src/wagon.cpp +++ b/Algo/tp/Cpp/3_tp/src/wagon.cpp @@ -1,29 +1,33 @@ #include "wagon.hpp" +#include "passager.hpp" #include #include +using namespace std; + Wagon::Wagon(int numero) :numero{numero} {} -int Wagon::ajouter(Passager lePassager) { - if(lesPassagers->size() == capacite) { +int Wagon::ajouter(Passager& lePassager) { + if(lesPassagers.size() == capacite) { return -1; } - lesPassagers->push_back(lePassager); + lesPassagers.push_back(&lePassager); return 0; } -int Wagon::enlever(Passager lePassager) { - if(lesPassagers->size() == 0) { - return -1; - } - lesPassagers->remove(lePassager); - return 0; +int Wagon::enlever(Passager& lePassager) { + list::iterator it = find(lesPassagers.begin(), lesPassagers.end(), &lePassager); + if(it == lesPassagers.end()) return 0; + + lesPassagers.erase(it); + return 1; } -ostream &operator<<(ostream &s, const Passager &p) { - s << "Wagon n° " << w.numero << " : " << w.nbPassagers->size() << " passager(s)." << endl; - s << "Reste " << w.capacite - w.nbPassagers->size() << " places(s)." << endl; - s << "Liste des passagers :\n" << w. +ostream &operator<<(ostream &s, const Wagon &w) { + s << "Wagon n° " << w.numero << " : " << w.lesPassagers->size() << " passager(s)." << endl; + s << "Reste " << w.capacite - w.lesPassagers->size() << " places(s)." << endl; + s << "Liste des passagers :\n" << w.lesPassagers << endl; + return s; } \ No newline at end of file diff --git a/Algo/tp/Cpp/3_tp/src/wagon.hpp b/Algo/tp/Cpp/3_tp/src/wagon.hpp index e95b9b4..364612d 100644 --- a/Algo/tp/Cpp/3_tp/src/wagon.hpp +++ b/Algo/tp/Cpp/3_tp/src/wagon.hpp @@ -3,7 +3,8 @@ #include #include -#include "passager.hpp" + +class Passager; class Wagon { @@ -11,7 +12,7 @@ private : int numero; - std::list *lesPassagers; + std::list lesPassagers; public : @@ -19,10 +20,10 @@ public : Wagon(int numero); - int ajouter(Passager lePassager); - int enlever(Passager lePassager); + int ajouter(Passager& lePassager); + int enlever(Passager& lePassager); - friend std::ostream &operator<<(std::ostream &s, const Passager &w); + friend std::ostream &operator<<(std::ostream &s, const Wagon &w); ~Wagon() = default; //~Wagon(){}; };