d04 ex02 dynamic_cast dans main pour ne pas avoir une metode pure brain dans animal au cas ou en correction...
This commit is contained in:
@@ -13,7 +13,7 @@ ifeq "$(TYPE)" "c"
|
||||
CC = c
|
||||
EXT = c
|
||||
else ifeq "$(TYPE)" "cpp"
|
||||
CC = clang++
|
||||
CC = c++
|
||||
EXT = cpp
|
||||
endif
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
virtual void makeSound() const = 0;
|
||||
std::string getType() const;
|
||||
|
||||
virtual Brain * getBrain() const = 0;
|
||||
// virtual Brain * getBrain() const = 0;
|
||||
|
||||
protected:
|
||||
std::string type;
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
Cat( Cat const & src );
|
||||
~Cat();
|
||||
Cat & operator=( Cat const & rhs );
|
||||
Cat & operator=( Animal const & rhs );
|
||||
// Cat & operator=( Animal const & rhs );
|
||||
|
||||
void makeSound() const;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
Dog( Dog const & src );
|
||||
~Dog();
|
||||
Dog & operator=( Dog const & rhs );
|
||||
Dog & operator=( Animal const & rhs );
|
||||
// Dog & operator=( Animal const & rhs );
|
||||
|
||||
void makeSound() const;
|
||||
Brain * getBrain() const;
|
||||
|
||||
@@ -18,25 +18,25 @@ int main() {
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << B_BLUE "cat i : " RESET;
|
||||
i->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(i)->getBrain()->printIdea(0);
|
||||
std::cout << B_BLUE "cat j : " RESET;
|
||||
j->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(j)->getBrain()->printIdea(0);
|
||||
|
||||
std::cout << "\n" B_BLUE "*i = *j" RESET "\n";
|
||||
*i = *j;
|
||||
*(dynamic_cast<Cat*>(i)) = *(dynamic_cast<Cat*>(j));
|
||||
|
||||
std::cout << B_BLUE "cat i : " RESET;
|
||||
i->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(i)->getBrain()->printIdea(0);
|
||||
std::cout << B_BLUE "cat j : " RESET;
|
||||
j->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(j)->getBrain()->printIdea(0);
|
||||
|
||||
std::cout << "\n" B_BLUE "j->getBrain->putIdea(\"I am not a cat\")" RESET "\n";
|
||||
j->getBrain()->putIdea(0, "I am not a cat");;
|
||||
dynamic_cast<Cat*>(j)->getBrain()->putIdea(0, "I am not a cat");;
|
||||
|
||||
std::cout << B_BLUE "cat i : " RESET;
|
||||
i->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(i)->getBrain()->printIdea(0);
|
||||
std::cout << B_BLUE "cat j : " RESET;
|
||||
j->getBrain()->printIdea(0);
|
||||
dynamic_cast<Cat*>(j)->getBrain()->printIdea(0);
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << B_BLUE "delete i" RESET "\n";
|
||||
|
||||
BIN
d04/ex02/pure
Executable file
BIN
d04/ex02/pure
Executable file
Binary file not shown.
@@ -67,6 +67,7 @@ Cat & Cat::operator=( Cat const & rhs ) {
|
||||
}
|
||||
// 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";
|
||||
@@ -74,6 +75,7 @@ Cat & Cat::operator=( Animal const & rhs ) {
|
||||
*_brain = *(rhs.getBrain());
|
||||
return *this;
|
||||
}
|
||||
*/
|
||||
|
||||
/*********************************************
|
||||
* PUBLIC MEMBER FUNCTIONS
|
||||
|
||||
@@ -56,6 +56,7 @@ Dog & Dog::operator=( Dog const & rhs ) {
|
||||
}
|
||||
// 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";
|
||||
@@ -63,6 +64,7 @@ Dog & Dog::operator=( Animal const & rhs ) {
|
||||
*_brain = *(rhs.getBrain());
|
||||
return *this;
|
||||
}
|
||||
*/
|
||||
|
||||
/*********************************************
|
||||
* PUBLIC MEMBER FUNCTIONS
|
||||
|
||||
Reference in New Issue
Block a user