Replace m_name with call to virtual getName
authorLukas Jiriste <ljiriste@student.42prague.com>
Thu, 24 Oct 2024 10:37:11 +0000 (12:37 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Thu, 24 Oct 2024 10:37:11 +0000 (12:37 +0200)
This ensures that methods of inherited classes use the correct name.

ex03/ClapTrap.cpp
ex03/ClapTrap.h
ex03/DiamondTrap.cpp
ex03/DiamondTrap.h
ex03/FragTrap.cpp
ex03/ScavTrap.cpp

index 5f225338991f3272999bd9e33f03fe16b48bdf44..9288cbd54fb016931d46050ab28a1b607a998c01 100644 (file)
@@ -8,7 +8,7 @@ ClapTrap::ClapTrap(std::string name, int hp, int energy, int attack)
        , m_energy(energy)
        , m_attack(attack)
 {
-       std::cout << "ClapTrap " << m_name << " has spawned.\n";
+       std::cout << "ClapTrap " << getName() << " has spawned.\n";
 }
 
 ClapTrap::ClapTrap(std::string name)
@@ -17,25 +17,25 @@ ClapTrap::ClapTrap(std::string name)
        , m_energy(start_energy)
        , m_attack(start_attack)
 {
-       std::cout << "ClapTrap " << m_name << " has spawned.\n";
+       std::cout << "ClapTrap " << getName() << " has spawned.\n";
 }
 
 ClapTrap::~ClapTrap()
 {
-       std::cout << "ClapTrap " << m_name << " has despawned.\n";
+       std::cout << "ClapTrap " << getName() << " has despawned.\n";
 }
 
 void   ClapTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
-               std::cout << "ClapTrap " << m_name
+               std::cout << "ClapTrap " << getName()
                        << " is dead, hence cannot attack.\n";
        else if (m_energy == 0)
-               std::cout << "ClapTrap " << m_name
+               std::cout << "ClapTrap " << getName()
                        << " does not have enough energy to attack.\n";
        else
        {
-               std::cout << "ClapTrap " << m_name
+               std::cout << "ClapTrap " << getName()
                        << " attacks " << target << " and deals " << m_attack << " damage.\n";
                --m_energy;
        }
@@ -44,17 +44,17 @@ void        ClapTrap::attack(const std::string &target)
 void   ClapTrap::takeDamage(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name <<
-                       " is already dead and cannot be damaged further.\n";
+               std::cout << getName()
+                       << " is already dead and cannot be damaged further.\n";
        else if (amount >= m_hp)
        {
-               std::cout << m_name
+               std::cout << getName()
                        << " takes " << amount << " damage and dies\n";
                m_hp = 0;
        }
        else
        {
-               std::cout << m_name
+               std::cout << getName()
                        << " takes " << amount << " damage.\n";
                m_hp -= amount;
        }
@@ -63,15 +63,20 @@ void        ClapTrap::takeDamage(unsigned int amount)
 void   ClapTrap::beRepaired(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name
+               std::cout << getName()
                        << " is dead, hence cannot repair itself.\n";
        else if (m_energy == 0)
-               std::cout << m_name
+               std::cout << getName()
                        << " does not have enough energy to repair itself.\n";
        else
        {
-               std::cout << m_name
+               std::cout << getName()
                        << " repairs iself for " << amount << " hit points.\n";
                m_hp += amount;
        }
 }
+
+std::string    ClapTrap::getName()
+{
+       return (m_name);
+}
index 5770a771c9cd040d90c39f88f252d15039163d79..3caa700dcb8823982ba8771d97e9567954e5e82e 100644 (file)
@@ -30,6 +30,8 @@ class ClapTrap
                void    attack(const std::string &target);
                void    takeDamage(unsigned int amount);
                void    beRepaired(unsigned int amount);
+
+               virtual std::string     getName();
 };
 
 #endif // CLAPTRAP_H
index 434779cbf1ccb9496dc59e0a18347b74a09d0906..5bef0466614852e11c74ae356345f502ffe1b4b8 100644 (file)
@@ -22,3 +22,8 @@ void  DiamondTrap::whoAmI()
        std::cout << "My DiamondTrap name is " << m_name
                << " while my ClapTrap name is " << ClapTrap::m_name << ".\n";
 }
+
+std::string    DiamondTrap::getName()
+{
+       return (m_name);
+}
index 1e497a02c50e233dea2bfc4cd764132575a5d49b..49130e87dc8bca8c922c90a9f9adb9d31c388a3c 100644 (file)
@@ -20,7 +20,9 @@ class DiamondTrap: public FragTrap, public ScavTrap
                ~DiamondTrap();
 
                using ScavTrap::attack;
-               void    whoAmI();
+
+               void            whoAmI();
+               std::string     getName();
 };
 
 #endif // DIAMONDTRAP_H
index c0e422ca3c31857c59868b3ba1a1c9ae640cb603..f99f71a639cd3c38abb0dd0ed5984826c2c3fc1f 100644 (file)
@@ -6,25 +6,25 @@
 FragTrap::FragTrap(std::string name)
        : ClapTrap(name, start_hp, start_energy, start_attack)
 {
-       std::cout << "FragTrap " << m_name << " has spawned.\n";
+       std::cout << "FragTrap " << getName() << " has spawned.\n";
 }
 
 FragTrap::~FragTrap()
 {
-       std::cout << "FragTrap " << m_name << " has despawned.\n";
+       std::cout << "FragTrap " << getName() << " has despawned.\n";
 }
 
 void   FragTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
-               std::cout << "FragTrap " << m_name
+               std::cout << "FragTrap " << getName()
                        << " is dead, hence cannot attack.\n";
        else if (m_energy == 0)
-               std::cout << "FragTrap " << m_name
+               std::cout << "FragTrap " << getName()
                        << " does not have enough energy to attack.\n";
        else
        {
-               std::cout << "FragTrap " << m_name
+               std::cout << "FragTrap " << getName()
                        << " attacks " << target << " and deals " << m_attack << " damage.\n";
                --m_energy;
        }
@@ -33,7 +33,7 @@ void  FragTrap::attack(const std::string &target)
 void   FragTrap::highFivesGuys()
 {
        if (m_hp == 0)
-               std::cout << m_name << " is dead and cannot request high fives.\n";
+               std::cout << getName() << " is dead and cannot request high fives.\n";
        else
-               std::cout << m_name << " raises hand and shouts, \"Up top!\"\n";
+               std::cout << getName() << " raises hand and shouts, \"Up top!\"\n";
 }
index 0b3065d10f86f4c7e8c0dfc4fa744f40c34a78f6..0cf02a05184fe6b87f9d5480bcc5fe53d7a64254 100644 (file)
@@ -7,25 +7,25 @@ ScavTrap::ScavTrap(std::string name)
        : ClapTrap(name, start_hp, start_energy, start_attack)
        , m_is_guarding(0)
 {
-       std::cout << "ScavTrap " << m_name << " has spawned.\n";
+       std::cout << "ScavTrap " << getName() << " has spawned.\n";
 }
 
 ScavTrap::~ScavTrap()
 {
-       std::cout << "ScavTrap " << m_name << " has despawned.\n";
+       std::cout << "ScavTrap " << getName() << " has despawned.\n";
 }
 
 void   ScavTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
-               std::cout << "ScavTrap " << m_name
+               std::cout << "ScavTrap " << getName()
                        << " is dead, hence cannot attack.\n";
        else if (m_energy == 0)
-               std::cout << "ScavTrap " << m_name
+               std::cout << "ScavTrap " << getName()
                        << " does not have enough energy to attack.\n";
        else
        {
-               std::cout << "ScavTrap " << m_name
+               std::cout << "ScavTrap " << getName()
                        << " attacks " << target << " and deals " << m_attack << " damage.\n";
                --m_energy;
        }
@@ -34,12 +34,12 @@ void        ScavTrap::attack(const std::string &target)
 void   ScavTrap::guardGate()
 {
        if (m_hp == 0)
-               std::cout << m_name << " is dead and cannot guard the gate.\n";
+               std::cout << getName() << " is dead and cannot guard the gate.\n";
        else if (m_is_guarding == 0)
        {
-               std::cout << m_name << " is now guarding the gate.\n";
+               std::cout << getName() << " is now guarding the gate.\n";
                m_is_guarding = 1;
        }
        else
-               std::cout << m_name << " is already guarding the gate.\n";
+               std::cout << getName() << " is already guarding the gate.\n";
 }