/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Base.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/09 13:23:31 by adjoly #+# #+# */ /* Updated: 2025/08/15 14:47:35 by mmoussou ### ########.fr */ /* */ /* ************************************************************************** */ #include "Base.hpp" #include #include Base *generate(void) { std::srand(time(0)); switch (std::rand() % 3) { case 0: std::cout << "A class generated :D" << std::endl; return new A; case 1: std::cout << "B class generated :D" << std::endl; return new B; case 2: std::cout << "C class generated :D" << std::endl; return new C; }; return new A; } void identify(Base *p) { if (dynamic_cast(p)) { std::cout << "omg it's an A object !" << std::endl; return; } if (dynamic_cast(p)) { std::cout << "omg it's a B object !" << std::endl; return; } if (dynamic_cast(p)) { std::cout << "omg it's a C object !" << std::endl; return; } std::cout << "what is this D:" << std::endl; } void identify(Base &p) { try { (void)dynamic_cast(p); std::cout << "omg it's an A object !" << std::endl; return; } catch (...) {} try { (void)dynamic_cast(p); std::cout << "omg it's an B object !" << std::endl; return; } catch (...) {} try { (void)dynamic_cast(p); std::cout << "omg it's an C object !" << std::endl; return; } catch (...) {} std::cout << "what is this D:" << std::endl; } Base::~Base(void) {}