From 12f4c72e770338da95e643b78b34c82a8dd7c8d4 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Fri, 25 Feb 2022 14:19:24 +0100 Subject: [PATCH] d04 ex01 en grande partie fait mais segfault qqpart --- d04/ex01/Animal.cpp | 6 ++ d04/ex01/Animal.hpp | 7 +-- d04/ex01/Brain.cpp | 65 ++++++++++++++++++++ d04/ex01/Brain.hpp | 30 +++++++++ d04/ex01/Cat.cpp | 18 +++++- d04/ex01/Cat.hpp | 17 +++-- d04/ex01/Dog.cpp | 9 ++- d04/ex01/Dog.hpp | 14 +++-- d04/ex01/Makefile | 8 +-- d04/ex01/WrongAnimal.cpp | 50 --------------- d04/ex01/WrongAnimal.hpp | 26 -------- d04/ex01/WrongCat.cpp | 40 ------------ d04/ex01/WrongCat.hpp | 23 ------- d04/ex01/burn | Bin 0 -> 33904 bytes d04/ex01/color.h | 24 ++++++++ d04/ex01/main.cpp | 130 +++++++++++++++++++++++++++++---------- 16 files changed, 271 insertions(+), 196 deletions(-) create mode 100644 d04/ex01/Brain.cpp create mode 100644 d04/ex01/Brain.hpp delete mode 100644 d04/ex01/WrongAnimal.cpp delete mode 100644 d04/ex01/WrongAnimal.hpp delete mode 100644 d04/ex01/WrongCat.cpp delete mode 100644 d04/ex01/WrongCat.hpp create mode 100755 d04/ex01/burn create mode 100644 d04/ex01/color.h diff --git a/d04/ex01/Animal.cpp b/d04/ex01/Animal.cpp index 3f9502f..f6fe5b2 100644 --- a/d04/ex01/Animal.cpp +++ b/d04/ex01/Animal.cpp @@ -1,15 +1,19 @@ #include "Animal.hpp" +#define COPLIEN_COLOR B_CYAN + /********************************************* * CONSTRUCTORS *********************************************/ Animal::Animal() { + std::cout << COPLIEN_COLOR "Animal constructor" RESET "\n"; type = "animal"; return; } Animal::Animal( Animal const & src ) { + std::cout << COPLIEN_COLOR "Animal copy constructor" RESET "\n"; *this = src; return; } @@ -19,6 +23,7 @@ Animal::Animal( Animal const & src ) { *********************************************/ Animal::~Animal() { + std::cout << COPLIEN_COLOR "Animal destructor" RESET "\n"; return; } @@ -27,6 +32,7 @@ Animal::~Animal() { *********************************************/ Animal & Animal::operator=( Animal const & rhs ) { + std::cout << COPLIEN_COLOR "Animal assignator" RESET "\n"; if ( this != &rhs ) { type = rhs.getType(); diff --git a/d04/ex01/Animal.hpp b/d04/ex01/Animal.hpp index 6d72ba1..c804d6f 100644 --- a/d04/ex01/Animal.hpp +++ b/d04/ex01/Animal.hpp @@ -1,6 +1,7 @@ #ifndef ANIMAL_HPP # define ANIMAL_HPP +# include "color.h" #include #include @@ -8,9 +9,9 @@ class Animal { public: - Animal( void ); + Animal(); Animal( Animal const & src ); - ~Animal( void ); + virtual ~Animal( void ); Animal & operator=( Animal const & rhs ); virtual void makeSound() const; @@ -20,8 +21,6 @@ protected: std::string type; -private: - }; #endif diff --git a/d04/ex01/Brain.cpp b/d04/ex01/Brain.cpp new file mode 100644 index 0000000..bd3543e --- /dev/null +++ b/d04/ex01/Brain.cpp @@ -0,0 +1,65 @@ +#include "Brain.hpp" + +#define COPLIEN_COLOR B_CYAN + +/********************************************* + * CONSTRUCTORS + *********************************************/ + +Brain::Brain() { + std::cout << COPLIEN_COLOR "Brain constructor" RESET "\n"; + return; +} + +Brain::Brain( Brain const & src ) { + std::cout << COPLIEN_COLOR "Brain copy constructor" RESET "\n"; + *this = src; + return; +} + +/********************************************* + * DESTRUCTORS + *********************************************/ + +Brain::~Brain() { + std::cout << COPLIEN_COLOR "Brain destructor" RESET "\n"; + return; +} + +/********************************************* + * OPERATORS + *********************************************/ + +Brain & Brain::operator=( Brain const & rhs ) { + std::cout << COPLIEN_COLOR "Brain assignator" RESET "\n"; + if ( this != &rhs ) + for (int i = 0; i < SIZE_IDEAS; i++) + _ideas[i] = rhs._ideas[i]; + return *this; +} + +/********************************************* + * ACCESSORS + *********************************************/ + +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/ex01/Brain.hpp b/d04/ex01/Brain.hpp new file mode 100644 index 0000000..e7b699d --- /dev/null +++ b/d04/ex01/Brain.hpp @@ -0,0 +1,30 @@ +#ifndef BRAIN_HPP +# define BRAIN_HPP + +#include "color.h" +#include +#include + +#define SIZE_IDEAS 100 + +class Brain { + +public: + + Brain( void ); + Brain( Brain const & src ); + ~Brain( void ); + Brain & operator=( Brain const & rhs ); + + void printIdea(int pos); + void putIdea(int pos, std::string idea); + void printIdeas(); + void putIdeas(std::string idea); + +private: + + std::string _ideas[SIZE_IDEAS]; +}; + +#endif + diff --git a/d04/ex01/Cat.cpp b/d04/ex01/Cat.cpp index 71212f1..734f11a 100644 --- a/d04/ex01/Cat.cpp +++ b/d04/ex01/Cat.cpp @@ -1,15 +1,20 @@ #include "Cat.hpp" +#define COPLIEN_COLOR B_CYAN + /********************************************* * CONSTRUCTORS *********************************************/ -Cat::Cat() { +Cat::Cat( Brain * brain ) { + std::cout << COPLIEN_COLOR "Cat constructor" RESET "\n"; type = "cat"; + _brain = brain; return; } Cat::Cat( Cat const & src ) { + std::cout << COPLIEN_COLOR "Cat copy constructor" RESET "\n"; *this = src; return; } @@ -19,6 +24,7 @@ Cat::Cat( Cat const & src ) { *********************************************/ Cat::~Cat() { + std::cout << COPLIEN_COLOR "Cat destructor" RESET "\n"; return; } @@ -27,8 +33,9 @@ Cat::~Cat() { *********************************************/ Cat & Cat::operator=( Cat const & rhs ) { + std::cout << COPLIEN_COLOR "Cat assignator" RESET "\n"; Animal::operator=(rhs); - + *_brain = *rhs._brain; return *this; } @@ -39,4 +46,9 @@ Cat & Cat::operator=( Cat const & rhs ) { void Cat::makeSound() const { std::cout << "*miaow*\n"; } - +void Cat::printBrain() const { + _brain->printIdeas(); +} +void Cat::printBrain(int pos) const { + _brain->printIdea(pos); +} diff --git a/d04/ex01/Cat.hpp b/d04/ex01/Cat.hpp index 0c7012e..2ff1055 100644 --- a/d04/ex01/Cat.hpp +++ b/d04/ex01/Cat.hpp @@ -1,26 +1,31 @@ #ifndef CAT_HPP # define CAT_HPP -# include "Animal.hpp" +# include "color.h" +# include +# include -#include -#include +# include "Animal.hpp" +# include "Brain.hpp" class Cat : public Animal { public: - Cat( void ); + Cat( Brain *brain = new Brain() ); Cat( Cat const & src ); - ~Cat( void ); + ~Cat(); Cat & operator=( Cat const & rhs ); void makeSound() const; -protected: + void printBrain() const; + void printBrain(int pos) const; private: + Brain *_brain; + }; #endif diff --git a/d04/ex01/Dog.cpp b/d04/ex01/Dog.cpp index dc4f62a..0b9f3ba 100644 --- a/d04/ex01/Dog.cpp +++ b/d04/ex01/Dog.cpp @@ -1,15 +1,20 @@ #include "Dog.hpp" +#define COPLIEN_COLOR B_CYAN + /********************************************* * CONSTRUCTORS *********************************************/ -Dog::Dog() { +Dog::Dog( Brain *brain ) { + std::cout << COPLIEN_COLOR "Dog constructor" RESET "\n"; type = "dog"; + _brain = brain; return; } Dog::Dog( Dog const & src ) { + std::cout << COPLIEN_COLOR "Dog copy constructor" RESET "\n"; *this = src; return; } @@ -19,6 +24,7 @@ Dog::Dog( Dog const & src ) { *********************************************/ Dog::~Dog() { + std::cout << COPLIEN_COLOR "Dog destructor" RESET "\n"; return; } @@ -28,6 +34,7 @@ Dog::~Dog() { Dog & Dog::operator=( Dog const & rhs ) { Animal::operator=(rhs); + _brain = rhs._brain; return *this; } diff --git a/d04/ex01/Dog.hpp b/d04/ex01/Dog.hpp index 6a977df..5a75ddc 100644 --- a/d04/ex01/Dog.hpp +++ b/d04/ex01/Dog.hpp @@ -1,26 +1,28 @@ #ifndef DOG_HPP # define DOG_HPP -# include "Animal.hpp" - +# include "color.h" # include # include +# include "Animal.hpp" +# include "Brain.hpp" + class Dog : public Animal { public: - Dog( void ); + Dog( Brain *brain = new Brain() ); Dog( Dog const & src ); - ~Dog( void ); + ~Dog(); Dog & operator=( Dog const & rhs ); void makeSound() const; -protected: - private: + Brain *_brain; + }; #endif diff --git a/d04/ex01/Makefile b/d04/ex01/Makefile index 50eca1c..0fb712c 100644 --- a/d04/ex01/Makefile +++ b/d04/ex01/Makefile @@ -4,7 +4,7 @@ # . name is case sensitive . ?= set if not already set # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # -NAME = poly +NAME = burn #TYPE = c TYPE = cpp @@ -33,15 +33,13 @@ SRCS = main.cpp \ Animal.cpp \ Dog.cpp \ Cat.cpp \ - WrongAnimal.cpp \ - WrongCat.cpp + Brain.cpp D_HEADERS = . HEADERS = Animal.hpp \ Dog.hpp \ Cat.hpp \ - WrongAnimal.hpp \ - WrongCat.hpp + Brain.hpp D_OBJS = builds OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) diff --git a/d04/ex01/WrongAnimal.cpp b/d04/ex01/WrongAnimal.cpp deleted file mode 100644 index 61928ff..0000000 --- a/d04/ex01/WrongAnimal.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "WrongAnimal.hpp" - -/********************************************* - * CONSTRUCTORS - *********************************************/ - -WrongAnimal::WrongAnimal() { - type = "wrong_animal"; - return; -} - -WrongAnimal::WrongAnimal( WrongAnimal const & src ) { - *this = src; - return; -} - -/********************************************* - * DESTRUCTORS - *********************************************/ - -WrongAnimal::~WrongAnimal() { - return; -} - -/********************************************* - * OPERATORS - *********************************************/ - -WrongAnimal & WrongAnimal::operator=( WrongAnimal const & rhs ) { - if ( this != &rhs ) - { - type = rhs.getType(); - } - return *this; -} - -/********************************************* - * ACCESSORS - *********************************************/ - -std::string WrongAnimal::getType() const {return type;} - -/********************************************* - * PUBLIC MEMBER FUNCTIONS - *********************************************/ - -void WrongAnimal::makeSound() const { - std::cout << "*sound*\n"; -} - diff --git a/d04/ex01/WrongAnimal.hpp b/d04/ex01/WrongAnimal.hpp deleted file mode 100644 index 8dd40db..0000000 --- a/d04/ex01/WrongAnimal.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef WRONG_ANIMAL_HPP -# define WRONG_ANIMAL_HPP - -#include -#include - -class WrongAnimal { - -public: - - WrongAnimal( void ); - WrongAnimal( WrongAnimal const & src ); - ~WrongAnimal( void ); - WrongAnimal & operator=( WrongAnimal const & rhs ); - - void makeSound() const; - std::string getType() const; - -protected: - - std::string type; - -}; - -#endif - diff --git a/d04/ex01/WrongCat.cpp b/d04/ex01/WrongCat.cpp deleted file mode 100644 index 8d13eef..0000000 --- a/d04/ex01/WrongCat.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "WrongCat.hpp" - -/********************************************* - * CONSTRUCTORS - *********************************************/ - -WrongCat::WrongCat() { - type = "wrong_cat"; - return; -} - -WrongCat::WrongCat( WrongCat const & src ) { - *this = src; - return; -} - -/********************************************* - * DESTRUCTORS - *********************************************/ - -WrongCat::~WrongCat() { - return; -} - -/********************************************* - * OPERATORS - *********************************************/ - -WrongCat & WrongCat::operator=( WrongCat const & rhs ) { - WrongAnimal::operator=(rhs); - return *this; -} - -/********************************************* - * PUBLIC MEMBER FUNCTIONS - *********************************************/ - -void WrongCat::makeSound() const { - std::cout << "*miaow*\n"; -} diff --git a/d04/ex01/WrongCat.hpp b/d04/ex01/WrongCat.hpp deleted file mode 100644 index 158267d..0000000 --- a/d04/ex01/WrongCat.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef WRONG_CAT_HPP -# define WRONG_CAT_HPP - -# include "WrongAnimal.hpp" - -#include -#include - -class WrongCat : public WrongAnimal { - -public: - - WrongCat( void ); - WrongCat( WrongCat const & src ); - ~WrongCat( void ); - WrongCat & operator=( WrongCat const & rhs ); - - void makeSound() const; - -}; - -#endif - diff --git a/d04/ex01/burn b/d04/ex01/burn new file mode 100755 index 0000000000000000000000000000000000000000..6199fb4046f0da7cb15febe7e8cc63d27b49146c GIT binary patch literal 33904 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 literal 0 HcmV?d00001 diff --git a/d04/ex01/color.h b/d04/ex01/color.h new file mode 100644 index 0000000..e313f5f --- /dev/null +++ b/d04/ex01/color.h @@ -0,0 +1,24 @@ +#ifndef COLOR_H +# define COLOR_H + +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif diff --git a/d04/ex01/main.cpp b/d04/ex01/main.cpp index 672ad4a..da15404 100644 --- a/d04/ex01/main.cpp +++ b/d04/ex01/main.cpp @@ -1,52 +1,118 @@ #include "Animal.hpp" #include "Dog.hpp" #include "Cat.hpp" -#include "WrongAnimal.hpp" -#include "WrongCat.hpp" #include #include +#include "color.h" + int main() { - const Animal* meta = new Animal(); - const Animal* j = new Dog(); - const Animal* i = new Cat(); - std::cout << j->getType() << " " << std::endl; - std::cout << i->getType() << " " << std::endl; - i->makeSound(); //will output the cat sound! - j->makeSound(); - meta->makeSound(); - + std::cout << B_YELLOW "\n1rst test :" RESET "\n"; { - std::cout << std::endl; - const Cat* i = new Cat(); - const Animal* j = new Cat(); - std::cout << j->getType() << " " << std::endl; - std::cout << i->getType() << " " << std::endl; - i->makeSound(); //will output the cat sound! - j->makeSound(); + const Animal* j = new Dog(); + const Animal* i = new Cat(); + delete j;//should not create a leak + delete i; } + std::cout << B_YELLOW "\n2nd test :" RESET "\n"; { - std::cout << std::endl; - const WrongAnimal* i = new WrongAnimal(); - const WrongAnimal* j = new WrongCat(); - std::cout << i->getType() << " " << std::endl; - std::cout << j->getType() << " " << std::endl; - i->makeSound(); //will output the cat sound! - j->makeSound(); + Dog * dog; + Cat * cat1; + Cat cat2; + Brain * brain1 = new Brain(); + Brain * brain2 = new Brain(); + + std::cout << B_BLUE "fill brain1 with \"giraffe\" :" RESET "\n"; + brain1->putIdeas("giraffe"); + std::cout << B_BLUE "print brain1 :" RESET "\n"; + brain1->printIdeas(); + std::cout << B_BLUE "print brain2 :" RESET "\n"; + brain2->printIdeas(); + std::cout << B_BLUE "brain2 copy brain1 :" RESET "\n"; + *brain2 = *brain1; + std::cout << B_BLUE "fill brain1 with \"hippopotamus\" :" RESET "\n"; + brain1->putIdeas("hippopotamus"); + std::cout << B_BLUE "print brain1 :" RESET "\n"; + brain1->printIdeas(); + std::cout << B_BLUE "print brain2 :" RESET "\n"; + brain2->printIdeas(); + + std::cout << B_BLUE "create new dog with brain1 :" RESET "\n"; + dog = new Dog(brain1); + 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 "fill brain1 with \"zebra\" :" RESET "\n"; + brain1->putIdeas("zebra"); + std::cout << B_BLUE "print cat1 :" RESET "\n"; + cat1->printBrain(); + std::cout << B_BLUE "print cat2 :" RESET "\n"; + cat2.printBrain(); + + delete dog; + delete cat1; + delete brain1; + delete brain2; } + std::cout << B_YELLOW "\narray animal test :" RESET "\n"; { - std::cout << std::endl; - const WrongCat* i = new WrongCat(); - const WrongAnimal* j = new WrongCat(); - std::cout << j->getType() << " " << std::endl; - std::cout << i->getType() << " " << std::endl; - i->makeSound(); //will output the cat sound! - j->makeSound(); + Animal *animals[10]; + int i; + + for (i = 0 ; i < 5 ; ++i) + animals[i] = new Cat(); + for ( ; i < 10 ; ++i) + animals[i] = new Dog(); + for (i = 0 ; i < 10 ; ++i) + animals[i]->makeSound(); + for (i = 0 ; i < 10 ; ++i) + delete animals[i]; } + std::cout << B_YELLOW "\ncopy constructor test1 :" RESET "\n"; + { + std::cout << B_BLUE "Cat a_cat :" RESET "\n"; + Cat a_cat; + std::cout << B_BLUE "Cat a_cpy_cat(a_cat) :" RESET "\n"; + Cat a_cpy_cat(a_cat); + } + + std::cout << B_YELLOW "\ncopy constructor test2 :" RESET "\n"; + { + std::cout << B_BLUE "Cat a_cat :" RESET "\n"; + Cat a_cat; + std::cout << B_BLUE "Cat a_cpy_cat = a_cat :" RESET "\n"; + Cat a_cpy_cat = a_cat; + } + + std::cout << B_YELLOW "\nassignation operator test1 :" RESET "\n"; + { + std::cout << B_BLUE "Cat a_cat :" RESET "\n"; + Cat a_cat; + std::cout << B_BLUE "Cat a_cpy_cat :" RESET "\n"; + Cat a_cpy_cat; + std::cout << B_BLUE "a_cpy_cat = a_cat :" RESET "\n"; + a_cpy_cat = a_cat; + } + + std::cout << B_YELLOW "\nassignation operator test2 :" RESET "\n"; + { + std::cout << B_BLUE "const Cat *a_cat :" RESET "\n"; + const Cat *a_cat = new Cat(); + std::cout << B_BLUE "Cat a_cpy_cat :" RESET "\n"; + Cat a_cpy_cat; + std::cout << B_BLUE "a_cpy_cat = *a_cat :" RESET "\n"; + a_cpy_cat = *a_cat; + + delete a_cat; + } + + return 0; }