From 96e78e34a1afae70d8de852c5b016aa921b3fece Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sat, 12 Mar 2022 16:21:56 +0100 Subject: [PATCH] d04 ex02 change pour pouvoir effectuer le test de erlazo --- d04/ex02/Makefile | 2 +- d04/ex02/a.out | Bin 0 -> 13760 bytes d04/ex02/headers/Animal.hpp | 11 +++---- d04/ex02/headers/Cat.hpp | 3 ++ d04/ex02/headers/Dog.hpp | 2 ++ d04/ex02/main.cpp | 54 +++++++++++++++++++++++++++++++++- d04/ex02/pure | Bin 44528 -> 34544 bytes d04/ex02/srcs/Brain.cpp | 4 --- d04/ex02/srcs/Cat.cpp | 26 ++++++++++++++-- d04/ex02/srcs/Dog.cpp | 14 +++++++-- d04/ex02/test_assignement.cpp | 38 ++++++++++++++++++++++++ 11 files changed, 138 insertions(+), 16 deletions(-) create mode 100755 d04/ex02/a.out create mode 100644 d04/ex02/test_assignement.cpp diff --git a/d04/ex02/Makefile b/d04/ex02/Makefile index fc4b7c2..fd3eed7 100644 --- a/d04/ex02/Makefile +++ b/d04/ex02/Makefile @@ -17,7 +17,7 @@ ifeq "$(TYPE)" "c" CC = c EXT = c else ifeq "$(TYPE)" "cpp" - CC = c++ + CC = clang++ EXT = cpp endif diff --git a/d04/ex02/a.out b/d04/ex02/a.out new file mode 100755 index 0000000000000000000000000000000000000000..970180251f1dd3d0791d2dad73c1bde666909fac GIT binary patch literal 13760 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 A+yDRo literal 0 HcmV?d00001 diff --git a/d04/ex02/headers/Animal.hpp b/d04/ex02/headers/Animal.hpp index d055205..8378a82 100644 --- a/d04/ex02/headers/Animal.hpp +++ b/d04/ex02/headers/Animal.hpp @@ -2,23 +2,24 @@ # define ANIMAL_HPP # include "color.h" -#include -#include +# include +# include +# include "Brain.hpp" class Animal { public: - Animal(); Animal( Animal const & src ); virtual ~Animal( void ); - Animal & operator=( Animal const & rhs ); + virtual Animal & operator=( Animal const & rhs ); virtual void makeSound() const = 0; std::string getType() const; -protected: + virtual Brain * getBrain() const = 0; +protected: std::string type; }; diff --git a/d04/ex02/headers/Cat.hpp b/d04/ex02/headers/Cat.hpp index ba516e2..1c69329 100644 --- a/d04/ex02/headers/Cat.hpp +++ b/d04/ex02/headers/Cat.hpp @@ -15,14 +15,17 @@ public: Cat(); Cat( Brain *brain ); // Cat( Brain *brain = new Brain() ); + Cat( std::string ideas ); Cat( Cat const & src ); ~Cat(); Cat & operator=( Cat const & rhs ); + Cat & operator=( Animal const & rhs ); void makeSound() const; void printBrain() const; void printBrain(int pos) const; + Brain * getBrain() const; private: diff --git a/d04/ex02/headers/Dog.hpp b/d04/ex02/headers/Dog.hpp index 17617cd..2fdc58d 100644 --- a/d04/ex02/headers/Dog.hpp +++ b/d04/ex02/headers/Dog.hpp @@ -17,8 +17,10 @@ public: Dog( Dog const & src ); ~Dog(); Dog & operator=( Dog const & rhs ); + Dog & operator=( Animal const & rhs ); void makeSound() const; + Brain * getBrain() const; private: diff --git a/d04/ex02/main.cpp b/d04/ex02/main.cpp index b443872..8292f33 100644 --- a/d04/ex02/main.cpp +++ b/d04/ex02/main.cpp @@ -6,11 +6,45 @@ #include #include "color.h" -#define N_TEST "7" +#define N_TEST "9" int main() { int i = 0; + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] test erlazo :" RESET "\n"; + { + Animal* i = new Cat("I am catwoman"); + Animal* j = new Cat("I am just a cat"); + + std::cout << std::endl; + std::cout << "cat i : "; + i->getBrain()->printIdea(0); + std::cout << "cat j : "; + j->getBrain()->printIdea(0); + + std::cout << "\n*i = *j\n"; + *i = *j; + + std::cout << "cat i : "; + i->getBrain()->printIdea(0); + std::cout << "cat j : "; + j->getBrain()->printIdea(0); + + std::cout << "\nj->getBrain->putIdea(\"I am not a cat\")\n"; + j->getBrain()->putIdea(0, "I am not a cat");; + + std::cout << "cat i : "; + i->getBrain()->printIdea(0); + std::cout << "cat j : "; + j->getBrain()->printIdea(0); + + std::cout << std::endl; + std::cout << "delete i\n"; + delete i; + std::cout << "delete j\n"; + delete j; + } + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] test subject :" RESET "\n"; { const Animal* j = new Dog(); @@ -66,6 +100,24 @@ int main() { delete brain2; } + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] test with brain :" RESET "\n"; + { + Cat * cat1; + Cat cat2; + Brain * brain1 = new Brain(); + + + std::cout << B_BLUE "create new cat with brain1 :" RESET "\n"; + cat1 = new Cat(brain1); + std::cout << B_BLUE "cat2 copy cat1 :" RESET "\n"; + cat2 = *cat1; + + std::cout << B_BLUE "delete cat1 :" RESET "\n"; + delete cat1; + std::cout << B_BLUE "delete brain1 :" RESET "\n"; + delete brain1; + } + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] array animal test :" RESET "\n"; { Animal *animals[10]; diff --git a/d04/ex02/pure b/d04/ex02/pure index 52f64802ecf9969e72432d28eb65d97845eb429e..956ca8defeb9e97647de6c1d256ce26d0d005561 100755 GIT binary patch literal 34544 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 K`2>8R^?v~9wLg^r literal 44528 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 diff --git a/d04/ex02/srcs/Brain.cpp b/d04/ex02/srcs/Brain.cpp index bd3543e..3c552f8 100644 --- a/d04/ex02/srcs/Brain.cpp +++ b/d04/ex02/srcs/Brain.cpp @@ -46,20 +46,16 @@ void Brain::printIdea(int pos) { if (pos < SIZE_IDEAS) std::cout << _ideas[pos] << "\n"; } - void Brain::putIdea(int pos, std::string idea) { if (pos < SIZE_IDEAS) _ideas[pos] = idea; } - void Brain::printIdeas() { for (int i = 0; i < SIZE_IDEAS; i++) std::cout << _ideas[i] << " - "; std::cout << "\n"; } - void Brain::putIdeas(std::string idea) { for (int i = 0; i < SIZE_IDEAS; i++) _ideas[i] = idea; } - diff --git a/d04/ex02/srcs/Cat.cpp b/d04/ex02/srcs/Cat.cpp index b9a3ace..621d138 100644 --- a/d04/ex02/srcs/Cat.cpp +++ b/d04/ex02/srcs/Cat.cpp @@ -17,12 +17,19 @@ Cat::Cat() { return; } Cat::Cat( Brain * brain ) { - std::cout << COPLIEN_COLOR "Cat parameters constructor" RESET "\n"; + std::cout << COPLIEN_COLOR "Cat parameters brain constructor" RESET "\n"; type = "cat"; _brain = new Brain(); *_brain = *brain; return; } +Cat::Cat( std::string ideas ) { + std::cout << COPLIEN_COLOR "Cat parameters ideas constructor" RESET "\n"; + type = "cat"; + _brain = new Brain(); + _brain->putIdeas(ideas); + return; +} /* * error: base class ‘class Animal’ should be explicitly initialized in the copy constructor [-Werror=extra] @@ -52,9 +59,19 @@ Cat::~Cat() { *********************************************/ Cat & Cat::operator=( Cat const & rhs ) { - std::cout << COPLIEN_COLOR "Cat assignator" RESET "\n"; Animal::operator=(rhs); - *_brain = *rhs._brain; + std::cout << COPLIEN_COLOR "Cat assignator" RESET "\n"; + if (this != &rhs) + *_brain = *(rhs.getBrain()); + return *this; +} +// need of a second overload in case "Animal cat" = "Animal cat"; +// https://stackoverflow.com/questions/68248198/why-my-virtual-assignment-operator-not-doing-as-intended +Cat & Cat::operator=( Animal const & rhs ) { + Animal::operator=(rhs); + std::cout << COPLIEN_COLOR "Cat (Animal) assignator" RESET "\n"; + if (this != &rhs) + *_brain = *(rhs.getBrain()); return *this; } @@ -71,3 +88,6 @@ void Cat::printBrain() const { void Cat::printBrain(int pos) const { _brain->printIdea(pos); } + +Brain * Cat::getBrain() const { return _brain; } + diff --git a/d04/ex02/srcs/Dog.cpp b/d04/ex02/srcs/Dog.cpp index f6f1cdb..cacfa69 100644 --- a/d04/ex02/srcs/Dog.cpp +++ b/d04/ex02/srcs/Dog.cpp @@ -49,9 +49,18 @@ Dog::~Dog() { Dog & Dog::operator=( Dog const & rhs ) { Animal::operator=(rhs); - _brain = new Brain(); + std::cout << COPLIEN_COLOR "Dog assignator" RESET "\n"; if (this != &rhs) - _brain = rhs._brain; + *_brain = *(rhs.getBrain()); + return *this; +} +// need of a second overload in case "Animal cat" = "Animal cat"; +// https://stackoverflow.com/questions/68248198/why-my-virtual-assignment-operator-not-doing-as-intended +Dog & Dog::operator=( Animal const & rhs ) { + Animal::operator=(rhs); + std::cout << COPLIEN_COLOR "Cat (Animal) assignator" RESET "\n"; + if (this != &rhs) + *_brain = *(rhs.getBrain()); return *this; } @@ -63,3 +72,4 @@ void Dog::makeSound() const { std::cout << "*woof*\n"; } +Brain * Dog::getBrain() const { return _brain; } diff --git a/d04/ex02/test_assignement.cpp b/d04/ex02/test_assignement.cpp new file mode 100644 index 0000000..f01af24 --- /dev/null +++ b/d04/ex02/test_assignement.cpp @@ -0,0 +1,38 @@ +# include +# include + +class Animal { +public: + virtual Animal & operator=( Animal const & rhs ) { + std::cout << "Animal operator=\n"; + return *this; + } +}; + +class Cat : public Animal { +public: + Cat & operator=( Cat const & rhs ) { + Animal::operator=(rhs); + std::cout << "Cat operator=\n"; + return *this; + } + Cat & operator=( Animal const & rhs ) { + Animal::operator=(rhs); + std::cout << "Cat operator=\n"; + return *this; + } + void catSpeak() {std::cout << "I am a cat\n";} +}; + +int main() { + Animal* i = new Cat(); + Animal* j = new Cat(); + + i->catSpeak(); + j->catSpeak(); + *i = *j; + + delete i; + delete j; +} +