ex02
This commit is contained in:
68
ex02/Base/Base.cpp
Normal file
68
ex02/Base/Base.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Base.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: aortigos <aortigos@student.42malaga.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2026/03/01 10:28:47 by aortigos #+# #+# */
|
||||
/* Updated: 2026/03/01 10:28:47 by aortigos ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Base.hpp"
|
||||
#include "../A/A.hpp"
|
||||
#include "../B/B.hpp"
|
||||
#include "../C/C.hpp"
|
||||
|
||||
//////////////////
|
||||
// Constructors //
|
||||
//////////////////
|
||||
|
||||
Base::~Base()
|
||||
{
|
||||
// std::cout << "Base destructor called" << std::endl;
|
||||
}
|
||||
|
||||
Base *generate()
|
||||
{
|
||||
int r;
|
||||
|
||||
r = rand() % 3;
|
||||
if (r == 0)
|
||||
return new A();
|
||||
if (r == 1)
|
||||
return new B();
|
||||
return new C();
|
||||
}
|
||||
|
||||
void identify(Base *p)
|
||||
{
|
||||
if (dynamic_cast<A*>(p))
|
||||
std::cout << "A" << std::endl;
|
||||
else if (dynamic_cast<B*>(p))
|
||||
std::cout << "B" << std::endl;
|
||||
else if (dynamic_cast<C*>(p))
|
||||
std::cout << "C" << std::endl;
|
||||
}
|
||||
|
||||
void identify(Base &p)
|
||||
{
|
||||
try {
|
||||
(void)dynamic_cast<A&>(p);
|
||||
std::cout << "A" << std::endl;
|
||||
return ;
|
||||
} catch (std::exception &e) {}
|
||||
|
||||
try {
|
||||
(void)dynamic_cast<B&>(p);
|
||||
std::cout << "B" << std::endl;
|
||||
return ;
|
||||
} catch (std::exception &e) {}
|
||||
|
||||
try {
|
||||
(void)dynamic_cast<C&>(p);
|
||||
std::cout << "C" << std::endl;
|
||||
return ;
|
||||
} catch (std::exception &e) {}
|
||||
}
|
||||
Reference in New Issue
Block a user