From 6d1cf25a5756b0eea6dcfc3dffb8bfb2e4919c50 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 10 Feb 2025 12:49:42 +0100 Subject: [PATCH] feat: finishing the ex00 --- cpp04/ex00/WrongCat.cpp | 6 +---- cpp04/ex00/WrongCat.hpp | 3 +-- cpp04/ex01/Cat.cpp | 4 ++- cpp04/ex01/Cat.hpp | 5 ++-- cpp04/ex01/Dog.cpp | 3 ++- cpp04/ex01/main.cpp | 55 ++++++++++++++++++++-------------------- cpp04/ex01/polyformism | Bin 0 -> 69168 bytes 7 files changed, 38 insertions(+), 38 deletions(-) create mode 100755 cpp04/ex01/polyformism diff --git a/cpp04/ex00/WrongCat.cpp b/cpp04/ex00/WrongCat.cpp index e7abd44..3fa7a60 100644 --- a/cpp04/ex00/WrongCat.cpp +++ b/cpp04/ex00/WrongCat.cpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/30 13:32:43 by rparodi #+# #+# */ -/* Updated: 2025/01/31 19:54:35 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:48:59 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,3 @@ WrongCat::WrongCat() { WrongCat::~WrongCat() { std::cout << "[WrongCat]\tDeleting the class" << std::endl; } - -void WrongCat::makeSound() const { - std::cout << "🙀 | Help me I transform my self in cat" << std::endl; -} diff --git a/cpp04/ex00/WrongCat.hpp b/cpp04/ex00/WrongCat.hpp index d9e55b6..76f621a 100644 --- a/cpp04/ex00/WrongCat.hpp +++ b/cpp04/ex00/WrongCat.hpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/28 17:44:48 by rparodi #+# #+# */ -/* Updated: 2025/01/31 19:37:00 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:49:13 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class WrongCat : public WrongAnimal { public: WrongCat(); ~WrongCat(); - virtual void makeSound() const; protected: private: diff --git a/cpp04/ex01/Cat.cpp b/cpp04/ex01/Cat.cpp index 5e2ef4c..c045f91 100644 --- a/cpp04/ex01/Cat.cpp +++ b/cpp04/ex01/Cat.cpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/30 13:32:43 by rparodi #+# #+# */ -/* Updated: 2025/01/31 19:54:03 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:22:32 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,9 +15,11 @@ Cat::Cat() { std::cout << "[Cat]\t\tCreating the class" << std::endl; type = "Cat"; + brain = new Brain(); } Cat::~Cat() { + delete brain; std::cout << "[Cat]\t\tDeleting the class" << std::endl; } diff --git a/cpp04/ex01/Cat.hpp b/cpp04/ex01/Cat.hpp index f770266..78e9530 100644 --- a/cpp04/ex01/Cat.hpp +++ b/cpp04/ex01/Cat.hpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/28 17:44:48 by rparodi #+# #+# */ -/* Updated: 2025/01/31 18:24:18 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:20:07 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ #define CAT_HPP #include "Animal.hpp" +#include "Brain.hpp" #include class Cat : public Animal { @@ -24,7 +25,7 @@ class Cat : public Animal { protected: private: - + Brain *brain; }; #endif diff --git a/cpp04/ex01/Dog.cpp b/cpp04/ex01/Dog.cpp index 12e0083..1eb69f7 100644 --- a/cpp04/ex01/Dog.cpp +++ b/cpp04/ex01/Dog.cpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/30 13:40:30 by rparodi #+# #+# */ -/* Updated: 2025/02/07 16:04:29 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:19:22 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ Dog::Dog() { } Dog::~Dog() { + delete brain; std::cout << "[Dog]\t\tDeleting the class" << std::endl; } diff --git a/cpp04/ex01/main.cpp b/cpp04/ex01/main.cpp index 3d8220d..93f3c9d 100644 --- a/cpp04/ex01/main.cpp +++ b/cpp04/ex01/main.cpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/28 17:08:09 by rparodi #+# #+# */ -/* Updated: 2025/01/31 19:52:09 by rparodi ### ########.fr */ +/* Updated: 2025/02/10 12:40:53 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,36 +15,37 @@ #include "Cat.hpp" #include "WrongAnimal.hpp" #include "WrongCat.hpp" +#include int main() { + const unsigned int n = 42; + if (n % 2 != 0) { + std::cerr << "n must be an even number, if not i can't create the same number of Cat and Animal" << std::endl; + return (1); + } + std::cout << "\033[0;33m[ Building classes ]\033[0m" << std::endl; - const Animal* meta = new Animal(); - const Animal* j = new Dog(); - const Animal* i = new Cat(); - const WrongAnimal* k = new WrongAnimal(); - const WrongAnimal* l = new WrongCat(); + Animal *animals[n]; + for (unsigned int i = 0; i < n; i++) { + std::cout << "(" << i + 1 << ") "; + if (i % 2 == 0) { + animals[i] = new Dog(); + } else { + animals[i] = new Cat(); + } + } - std::cout << std::endl << "\033[0;33m[ Testing the getType method ]\033[0m" << std::endl; - std::cout << "Type of j:\t" << j->getType() << std::endl; - std::cout << "Type of i:\t" << i->getType() << std::endl; - std::cout << "Type of l:\t" << l->getType() << std::endl; + std::cout << "\033[0;33m[ Making sounds ]\033[0m" << std::endl; + for (unsigned int i = 0; i < n; i++) { + std::cout << "(" << i + 1 << ") "; + animals[i]->makeSound(); + } + + std::cout << "\033[0;33m[ Deleting classes ]\033[0m" << std::endl; + for (unsigned int i = 0; i < n; i++) { + std::cout << "(" << i + 1 << ") "; + delete animals[i]; + } - std::cout << std::endl << "\033[0;33m[ Testing the makeSound method ]\033[0m" << std::endl; - std::cout << "Sound of meta:\t"; - meta->makeSound(); - std::cout << std::endl << "Sound of i:\t"; - i->makeSound(); - std::cout << std::endl << "Sound of j:\t"; - j->makeSound(); - std::cout << std::endl << "Sound of k:\t"; - k->makeSound(); - std::cout << std::endl << "Sound of l:\t"; - l->makeSound(); - std::cout << std::endl << "\033[0;33m[ Deleting classes ]\033[0m" << std::endl; - delete meta; - delete j; - delete i; - delete k; - delete l; return 0; } diff --git a/cpp04/ex01/polyformism b/cpp04/ex01/polyformism new file mode 100755 index 0000000000000000000000000000000000000000..a02db6cc0a7fec5a1477c4a7dc5bdbbb2c4b7fb3 GIT binary patch literal 69168 zcmb<-^>JfjWMqH=CI&kO5U)Vk0W1U|85lOOfJDJU3=Rwy47>~u3~CIj3~USx3@i)` z3@~*LP!^27!35C*qd6d424<)}2@r#UfkA>9VgihofvSViFxx>i$Udkvip?Og1AHKo zfdNJ{2tfECeXJlRl+Pdlu@6R16a`5#Fu-VJePH_xAo2_bP<>EZfEOYTqmlK2!sdYw zME*exL?4X)0rj^9*ij4&Fnyrl0_nTq3(ZD)q1H3#=VT_Cnds-F=;mbRl~(9h zSeWUWndlYg>luNq2e}Jm2Ppd7{X!X-8W;|M#9;bCY!LoCKfq_Aqfq?-O&!D6&fhrB>f$Rpk0~WUIa2bf(L0oPI1_nt61_qE{ z#XtfK3=CWh3}Cl`+z%2$b~7|ffP}&R2k8OX1G1yRQ9wbFQGgL7267X~+!Kvlm*yt# zJ*xQk3#Z5o9_I?r>}{H^SD`rvYzzhg$_F4nqD#myGcaHi2e}iQ_%cT9>iw9oi$B64 zUWUWo4jke;aM;^}!~7#S#7!8myVDJa`C2&CZ^9vd1&28mIMkoQ;Z9JwgDw2iafA;j zy@2$f$8R_z1A`)iID-PTT#SG!sD+9*poxEmy0ZaR-b2;LGK12u3flQPQ;4MD+`lUQ6FUs73+8lRb$mXAf1kwJWXab|onhQj#dip2P& z)bz}}_~gWrIA#Tnq&xN=gHEy8M?MHfO zz+)AWMoCL)Py>QXOp^0UOBmuq^U5>xQsRSBi%WA;8RFw}GLw>_nJzamGmin3QWE16 zOHwN`OBix8lZs1HlC`x#^|cv@n+s>9Cnv`jgLsA@@njIojKSU6Io?>$fWh6z)5$sB zNY6;m6wWp_fiNQ?;*Ir8^o-0HoFgI}ojl_W^^B2aklA`hh71f0Obkp6%nU4Gnw5c# zff)=zV$2NeU{R0=2LmGm3j+&S4n#sq97YC4hIP!4W+A8?3{b1&2G!=rKn(;21_nk3 zCWbvwc~H}|R4S8`fq{+T98_$}#A$4x8v7PpJqyEBs2s?KvLDl#7#P?Yok0|z`*b#9#TGn>U88b!v`dBP`d+U7YM`3YveWr zNE}vPgTz7Y8;}?nL(655IH-*P76bJY5+L@1?1UECU?~M8apbm$29h{5D8T9ski?;0 z0*hN9iG%D03xawXNaCP&3ryStNgNawF!2B+aZno!CLVz#j@)ibKoSSFtzhaiki
M*mv>7JBIb=68Ykpse%K0L*U!@j+SU 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 literal 0 HcmV?d00001