Move some functions of OCF to private
authorLukas Jiriste <ljiriste@student.42prague.com>
Thu, 24 Oct 2024 08:03:17 +0000 (10:03 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Thu, 24 Oct 2024 08:09:23 +0000 (10:09 +0200)
I was not sure whether the Orthodox Canonical Form dictates that the 4
functions be defined so I defined to be sure even though I did not think
it makes sense for Claptrap to have a copy constructor and assignment or
even a default constructor.
I learned that the methods only need to be present (in OCF), but need
not be usable. In C++11 I would delete the methods, in C++98 I have to
place the declaration inside private.

15 files changed:
ex00/ClapTrap.cpp
ex00/ClapTrap.h
ex00/main.cpp
ex01/ClapTrap.cpp
ex01/ClapTrap.h
ex01/ScavTrap.cpp
ex01/ScavTrap.h
ex01/main.cpp
ex02/ClapTrap.cpp
ex02/ClapTrap.h
ex02/FragTrap.cpp
ex02/FragTrap.h
ex02/ScavTrap.cpp
ex02/ScavTrap.h
ex02/main.cpp

index 47b25bae5c05de383ff01f8b43c93856ca868a7f..9fb2e9dc76dda008e46957419649631330465482 100644 (file)
@@ -8,28 +8,11 @@ ClapTrap::ClapTrap(std::string name):
        std::cout << "ClapTrap " << m_name << " has spawned.\n";
 }
 
-ClapTrap::ClapTrap(const ClapTrap &other)
-{
-       std::cout << "ClapTrap " << m_name << " has spawned.\n";
-       *this = other;
-}
-
 ClapTrap::~ClapTrap()
 {
        std::cout << "ClapTrap " << m_name << " has despawned.\n";
 }
 
-ClapTrap       &ClapTrap::operator=(const ClapTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       m_name = other.m_name;
-       m_hp = other.m_hp;
-       m_energy = other.m_energy;
-       m_attack = other.m_attack;
-       return (*this);
-}
-
 void   ClapTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
index aa781d1a22204ceaac3bc4a9a45e683e63c8b569..2edecfe6015c8acd038543414e054630905c1f82 100644 (file)
@@ -11,13 +11,15 @@ class ClapTrap
                unsigned int    m_energy;
                unsigned int    m_attack;
 
-       public:
-               ClapTrap(std::string name = "DEFAULT");
+               ClapTrap();
                ClapTrap(const ClapTrap &other);
-               ~ClapTrap();
 
                ClapTrap        &operator=(const ClapTrap &other);
 
+       public:
+               ClapTrap(std::string name);
+               ~ClapTrap();
+
                void    attack(const std::string &target);
                void    takeDamage(unsigned int amount);
                void    beRepaired(unsigned int amount);
index 9c9b676eed016bd54c449c8bdf59a2cc5ddd5d10..e1bfd1f39ea199275e1d2bf269e5952c02b03060 100644 (file)
@@ -3,18 +3,18 @@
 int    main()
 {
        ClapTrap        a("Alen");
-       ClapTrap        def;
+       ClapTrap        b("Boris");
 
-       def.attack("foo");
-       def.takeDamage(9);
-       def.takeDamage(0);
-       def.beRepaired(6);
-       def.takeDamage(5);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.attack("foo");
-       def.beRepaired(10);
+       b.attack("foo");
+       b.takeDamage(9);
+       b.takeDamage(0);
+       b.beRepaired(6);
+       b.takeDamage(5);
+       b.takeDamage(1);
+       b.takeDamage(1);
+       b.takeDamage(1);
+       b.attack("foo");
+       b.beRepaired(10);
        for (int i(0); i < 10; ++i)
                a.attack("bar");
        a.takeDamage(9);
index 390ca630148f7ac9acd92ce3f4bb0032dba660da..9fb2e9dc76dda008e46957419649631330465482 100644 (file)
@@ -8,28 +8,11 @@ ClapTrap::ClapTrap(std::string name):
        std::cout << "ClapTrap " << m_name << " has spawned.\n";
 }
 
-ClapTrap::ClapTrap(const ClapTrap &other)
-{
-       std::cout << "ClapTrap " << m_name << " has spawned.\n";
-       *this = other;
-}
-
 ClapTrap::~ClapTrap()
 {
        std::cout << "ClapTrap " << m_name << " has despawned.\n";
 }
 
-ClapTrap       &ClapTrap::operator=(const ClapTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       m_name = other.m_name;
-       m_hp = other.m_hp;
-       m_energy = other.m_energy;
-       m_attack = other.m_attack;
-       return (*this);
-}
-
 void   ClapTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
@@ -49,17 +32,17 @@ void        ClapTrap::attack(const std::string &target)
 void   ClapTrap::takeDamage(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name <<
+               std::cout << "ClapTrap " << m_name <<
                        " is already dead and cannot be damaged further.\n";
        else if (amount >= m_hp)
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " takes " << amount << " damage and dies\n";
                m_hp = 0;
        }
        else
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " takes " << amount << " damage.\n";
                m_hp -= amount;
        }
@@ -68,14 +51,14 @@ void        ClapTrap::takeDamage(unsigned int amount)
 void   ClapTrap::beRepaired(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " is dead, hence cannot repair itself.\n";
        else if (m_energy == 0)
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " does not have enough energy to repair itself.\n";
        else
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " repairs iself for " << amount << " hit points.\n";
                m_hp += amount;
        }
index 59e7d33362503b45bfc5b19c8ff940f548a2d7a7..cb2c73642c6f32994fdce72a4c571ccec7ab131e 100644 (file)
@@ -11,13 +11,15 @@ class ClapTrap
                unsigned int    m_energy;
                unsigned int    m_attack;
 
-       public:
-               ClapTrap(std::string name = "DEFAULT");
+               ClapTrap();
                ClapTrap(const ClapTrap &other);
-               ~ClapTrap();
 
                ClapTrap        &operator=(const ClapTrap &other);
 
+       public:
+               ClapTrap(std::string name);
+               ~ClapTrap();
+
                void    attack(const std::string &target);
                void    takeDamage(unsigned int amount);
                void    beRepaired(unsigned int amount);
index f867bbeb4328f0da475486c876f2a0d8a077785e..7ca746f76b62c0f9f69a5ba89c56a8cc2cebd0a7 100644 (file)
@@ -12,25 +12,11 @@ ScavTrap::ScavTrap(std::string name): ClapTrap(name)
        m_is_guarding = 0;
 }
 
-ScavTrap::ScavTrap(const ScavTrap &other)
-{
-       *this = other;
-}
-
 ScavTrap::~ScavTrap()
 {
        std::cout << "ScavTrap " << m_name << " has despawned.\n";
 }
 
-ScavTrap       &ScavTrap::operator=(const ScavTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       ClapTrap::operator=(other);
-       m_is_guarding = other.m_is_guarding;
-       return (*this);
-}
-
 void   ScavTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
index 4a538e5ffce6cb74157a29fb7068214f9e5891f3..b7664f2148870955d0a1534767d37c1ce395b949 100644 (file)
@@ -9,13 +9,15 @@ class ScavTrap : public ClapTrap
        private:
                bool    m_is_guarding;
 
-       public:
-               ScavTrap(std::string name = "DEFAULT");
+               ScavTrap();
                ScavTrap(const ScavTrap &other);
-               ~ScavTrap();
 
                ScavTrap        &operator=(const ScavTrap &other);
 
+       public:
+               ScavTrap(std::string name);
+               ~ScavTrap();
+
                void    attack(const std::string &target);
                void    guardGate();
 };
index 2f16fe487544f97540bc9850d66cf0081a4bb32d..38dcebb8017113850b67479852c07382cf872e72 100644 (file)
@@ -3,19 +3,19 @@
 
 int    main()
 {
-       ScavTrap        a("Alen");
-       ClapTrap        def;
+       ClapTrap        a("Alen");
+       ScavTrap        b("Boris");
 
-       def.attack("foo");
-       def.takeDamage(9);
-       def.takeDamage(0);
-       def.beRepaired(6);
-       def.takeDamage(5);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.attack("foo");
-       def.beRepaired(10);
+       b.attack("foo");
+       b.takeDamage(9);
+       b.takeDamage(0);
+       b.beRepaired(6);
+       b.takeDamage(5);
+       b.takeDamage(1);
+       b.takeDamage(1);
+       b.takeDamage(1);
+       b.attack("foo");
+       b.beRepaired(10);
        for (int i(0); i < 50; ++i)
                a.attack("bar");
        a.takeDamage(9);
index 390ca630148f7ac9acd92ce3f4bb0032dba660da..9fb2e9dc76dda008e46957419649631330465482 100644 (file)
@@ -8,28 +8,11 @@ ClapTrap::ClapTrap(std::string name):
        std::cout << "ClapTrap " << m_name << " has spawned.\n";
 }
 
-ClapTrap::ClapTrap(const ClapTrap &other)
-{
-       std::cout << "ClapTrap " << m_name << " has spawned.\n";
-       *this = other;
-}
-
 ClapTrap::~ClapTrap()
 {
        std::cout << "ClapTrap " << m_name << " has despawned.\n";
 }
 
-ClapTrap       &ClapTrap::operator=(const ClapTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       m_name = other.m_name;
-       m_hp = other.m_hp;
-       m_energy = other.m_energy;
-       m_attack = other.m_attack;
-       return (*this);
-}
-
 void   ClapTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
@@ -49,17 +32,17 @@ void        ClapTrap::attack(const std::string &target)
 void   ClapTrap::takeDamage(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name <<
+               std::cout << "ClapTrap " << m_name <<
                        " is already dead and cannot be damaged further.\n";
        else if (amount >= m_hp)
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " takes " << amount << " damage and dies\n";
                m_hp = 0;
        }
        else
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " takes " << amount << " damage.\n";
                m_hp -= amount;
        }
@@ -68,14 +51,14 @@ void        ClapTrap::takeDamage(unsigned int amount)
 void   ClapTrap::beRepaired(unsigned int amount)
 {
        if (m_hp == 0)
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " is dead, hence cannot repair itself.\n";
        else if (m_energy == 0)
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " does not have enough energy to repair itself.\n";
        else
        {
-               std::cout << m_name
+               std::cout << "ClapTrap " << m_name
                        << " repairs iself for " << amount << " hit points.\n";
                m_hp += amount;
        }
index 59e7d33362503b45bfc5b19c8ff940f548a2d7a7..cb2c73642c6f32994fdce72a4c571ccec7ab131e 100644 (file)
@@ -11,13 +11,15 @@ class ClapTrap
                unsigned int    m_energy;
                unsigned int    m_attack;
 
-       public:
-               ClapTrap(std::string name = "DEFAULT");
+               ClapTrap();
                ClapTrap(const ClapTrap &other);
-               ~ClapTrap();
 
                ClapTrap        &operator=(const ClapTrap &other);
 
+       public:
+               ClapTrap(std::string name);
+               ~ClapTrap();
+
                void    attack(const std::string &target);
                void    takeDamage(unsigned int amount);
                void    beRepaired(unsigned int amount);
index 882213ec40ac7686eaa71cb5834ec01f5bac3b2a..9bd67b93acedcba2140a0d70315b5c71ccaeb11f 100644 (file)
@@ -12,25 +12,11 @@ FragTrap::FragTrap(std::string name): ClapTrap(name)
        m_is_guarding = 0;
 }
 
-FragTrap::FragTrap(const FragTrap &other)
-{
-       *this = other;
-}
-
 FragTrap::~FragTrap()
 {
        std::cout << "FragTrap " << m_name << " has despawned.\n";
 }
 
-FragTrap       &FragTrap::operator=(const FragTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       ClapTrap::operator=(other);
-       m_is_guarding = other.m_is_guarding;
-       return (*this);
-}
-
 void   FragTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
index 64984d3fee9e94bfa76b820be6c99058a197fed2..c1bbc5269a5661fd21191ea1cdbdfee46d34ae08 100644 (file)
@@ -9,13 +9,16 @@ class FragTrap : public ClapTrap
        private:
                bool    m_is_guarding;
 
-       public:
-               FragTrap(std::string name = "DEFAULT");
+               FragTrap();
                FragTrap(const FragTrap &other);
-               ~FragTrap();
 
                FragTrap        &operator=(const FragTrap &other);
 
+       public:
+               FragTrap(std::string name);
+               ~FragTrap();
+
+
                void    attack(const std::string &target);
                void    highFivesGuys();
 };
index f867bbeb4328f0da475486c876f2a0d8a077785e..7ca746f76b62c0f9f69a5ba89c56a8cc2cebd0a7 100644 (file)
@@ -12,25 +12,11 @@ ScavTrap::ScavTrap(std::string name): ClapTrap(name)
        m_is_guarding = 0;
 }
 
-ScavTrap::ScavTrap(const ScavTrap &other)
-{
-       *this = other;
-}
-
 ScavTrap::~ScavTrap()
 {
        std::cout << "ScavTrap " << m_name << " has despawned.\n";
 }
 
-ScavTrap       &ScavTrap::operator=(const ScavTrap &other)
-{
-       if (this == &other)
-               return (*this);
-       ClapTrap::operator=(other);
-       m_is_guarding = other.m_is_guarding;
-       return (*this);
-}
-
 void   ScavTrap::attack(const std::string &target)
 {
        if (m_hp == 0)
index 4a538e5ffce6cb74157a29fb7068214f9e5891f3..b7664f2148870955d0a1534767d37c1ce395b949 100644 (file)
@@ -9,13 +9,15 @@ class ScavTrap : public ClapTrap
        private:
                bool    m_is_guarding;
 
-       public:
-               ScavTrap(std::string name = "DEFAULT");
+               ScavTrap();
                ScavTrap(const ScavTrap &other);
-               ~ScavTrap();
 
                ScavTrap        &operator=(const ScavTrap &other);
 
+       public:
+               ScavTrap(std::string name);
+               ~ScavTrap();
+
                void    attack(const std::string &target);
                void    guardGate();
 };
index 03093ee66a25cb38c62077cc5c7daf5e5348d427..94e005c1156ab7351058f1ad6161d6d05211e79f 100644 (file)
@@ -4,30 +4,30 @@
 
 int    main()
 {
-       ScavTrap        a("Alen");
-       ClapTrap        def;
-       FragTrap        b("Glenn");
+       ClapTrap        a("Alen");
+       ScavTrap        b("Boris");
+       FragTrap        c("Charles");
 
-       def.attack("foo");
-       def.takeDamage(9);
-       def.takeDamage(0);
-       def.beRepaired(6);
-       def.takeDamage(5);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.takeDamage(1);
-       def.attack("foo");
-       def.beRepaired(10);
+       a.attack("foo");
        a.takeDamage(9);
-       a.guardGate();
-       a.guardGate();
-       a.attack("bar");
-       a.beRepaired(1);
-       a.takeDamage(100);
+       a.takeDamage(0);
+       a.beRepaired(6);
+       a.takeDamage(5);
        a.takeDamage(1);
-       a.guardGate();
-       a.attack("bar");
-       a.beRepaired(1);
-       b.highFivesGuys();
+       a.takeDamage(1);
+       a.takeDamage(1);
+       a.attack("foo");
+       a.beRepaired(10);
+       b.takeDamage(9);
+       b.guardGate();
+       b.guardGate();
+       b.attack("bar");
+       b.beRepaired(1);
+       b.takeDamage(100);
+       b.takeDamage(1);
+       b.guardGate();
+       b.attack("bar");
+       b.beRepaired(1);
+       c.highFivesGuys();
        return (0);
 }