From 57de4fa94804da813d80b9b8d68356962f9ba1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Tue, 27 May 2025 13:39:30 +0200 Subject: [PATCH] fix(norm): add copy contructor --- ex00/ClapTrap.cpp | 8 ++++++++ ex00/ClapTrap.hpp | 1 + ex01/ClapTrap.cpp | 8 ++++++++ ex01/ClapTrap.hpp | 1 + ex01/ScavTrap.cpp | 8 ++++++++ ex01/ScavTrap.hpp | 1 + ex02/ClapTrap.cpp | 8 ++++++++ ex02/ClapTrap.hpp | 1 + ex02/FragTrap.cpp | 8 ++++++++ ex02/FragTrap.hpp | 1 + ex02/ScavTrap.cpp | 8 ++++++++ ex02/ScavTrap.hpp | 1 + ex03/ClapTrap.cpp | 8 ++++++++ ex03/ClapTrap.hpp | 1 + ex03/DiamondTrap.cpp | 11 +++++++++++ ex03/DiamondTrap.hpp | 1 + ex03/FragTrap.cpp | 8 ++++++++ ex03/FragTrap.hpp | 1 + ex03/ScavTrap.cpp | 8 ++++++++ ex03/ScavTrap.hpp | 1 + 20 files changed, 93 insertions(+) diff --git a/ex00/ClapTrap.cpp b/ex00/ClapTrap.cpp index fc8ac6d..279f83d 100644 --- a/ex00/ClapTrap.cpp +++ b/ex00/ClapTrap.cpp @@ -7,6 +7,14 @@ ClapTrap::ClapTrap() std::cout << "ClapTrap::ClapTrap()" << std::endl; } +ClapTrap::ClapTrap(const ClapTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ClapTrap::ClapTrap(const ClapTrap &other)" << std::endl; +} + ClapTrap::ClapTrap(std::string name) : name(name), hit_points(10), energy_points(10), attack_damage(0) { std::cout << "ClapTrap::ClapTrap(" << name << ")" << std::endl; diff --git a/ex00/ClapTrap.hpp b/ex00/ClapTrap.hpp index 72fda40..f7c08bd 100644 --- a/ex00/ClapTrap.hpp +++ b/ex00/ClapTrap.hpp @@ -12,6 +12,7 @@ private: public: ClapTrap(); + ClapTrap(const ClapTrap &other); ClapTrap(std::string name); ~ClapTrap(); ClapTrap &operator=(const ClapTrap &other); diff --git a/ex01/ClapTrap.cpp b/ex01/ClapTrap.cpp index fc8ac6d..279f83d 100644 --- a/ex01/ClapTrap.cpp +++ b/ex01/ClapTrap.cpp @@ -7,6 +7,14 @@ ClapTrap::ClapTrap() std::cout << "ClapTrap::ClapTrap()" << std::endl; } +ClapTrap::ClapTrap(const ClapTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ClapTrap::ClapTrap(const ClapTrap &other)" << std::endl; +} + ClapTrap::ClapTrap(std::string name) : name(name), hit_points(10), energy_points(10), attack_damage(0) { std::cout << "ClapTrap::ClapTrap(" << name << ")" << std::endl; diff --git a/ex01/ClapTrap.hpp b/ex01/ClapTrap.hpp index 1efa4d8..a4cc525 100644 --- a/ex01/ClapTrap.hpp +++ b/ex01/ClapTrap.hpp @@ -12,6 +12,7 @@ protected: public: ClapTrap(); + ClapTrap(const ClapTrap &other); ClapTrap(std::string name); ~ClapTrap(); ClapTrap &operator=(const ClapTrap &other); diff --git a/ex01/ScavTrap.cpp b/ex01/ScavTrap.cpp index 85bd4f2..d2acf91 100644 --- a/ex01/ScavTrap.cpp +++ b/ex01/ScavTrap.cpp @@ -8,6 +8,14 @@ ScavTrap::ScavTrap() { attack_damage = 20; } +ScavTrap::ScavTrap(const ScavTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ScavTrap::ScavTrap(const ScavTrap &other)" << std::endl; +} + ScavTrap::ScavTrap(std::string name) { std::cout << "ScavTrap::ScavTrap(" << name << ")" << std::endl; hit_points = 100; diff --git a/ex01/ScavTrap.hpp b/ex01/ScavTrap.hpp index abbc9a7..4e16309 100644 --- a/ex01/ScavTrap.hpp +++ b/ex01/ScavTrap.hpp @@ -6,6 +6,7 @@ class ScavTrap : public ClapTrap { public: ScavTrap(); + ScavTrap(const ScavTrap &other); ScavTrap(std::string name); ~ScavTrap(); ScavTrap &operator=(const ScavTrap &other); diff --git a/ex02/ClapTrap.cpp b/ex02/ClapTrap.cpp index fc8ac6d..279f83d 100644 --- a/ex02/ClapTrap.cpp +++ b/ex02/ClapTrap.cpp @@ -7,6 +7,14 @@ ClapTrap::ClapTrap() std::cout << "ClapTrap::ClapTrap()" << std::endl; } +ClapTrap::ClapTrap(const ClapTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ClapTrap::ClapTrap(const ClapTrap &other)" << std::endl; +} + ClapTrap::ClapTrap(std::string name) : name(name), hit_points(10), energy_points(10), attack_damage(0) { std::cout << "ClapTrap::ClapTrap(" << name << ")" << std::endl; diff --git a/ex02/ClapTrap.hpp b/ex02/ClapTrap.hpp index 1efa4d8..a4cc525 100644 --- a/ex02/ClapTrap.hpp +++ b/ex02/ClapTrap.hpp @@ -12,6 +12,7 @@ protected: public: ClapTrap(); + ClapTrap(const ClapTrap &other); ClapTrap(std::string name); ~ClapTrap(); ClapTrap &operator=(const ClapTrap &other); diff --git a/ex02/FragTrap.cpp b/ex02/FragTrap.cpp index 95dc231..56a85a1 100644 --- a/ex02/FragTrap.cpp +++ b/ex02/FragTrap.cpp @@ -8,6 +8,14 @@ FragTrap::FragTrap() { attack_damage = 30; } +FragTrap::FragTrap(const FragTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "FragTrap::FragTrap(const FragTrap &other)" << std::endl; +} + FragTrap::FragTrap(std::string name) { std::cout << "FragTrap::FragTrap(" << name << ")" << std::endl; hit_points = 100; diff --git a/ex02/FragTrap.hpp b/ex02/FragTrap.hpp index cc2f53b..2764d38 100644 --- a/ex02/FragTrap.hpp +++ b/ex02/FragTrap.hpp @@ -6,6 +6,7 @@ class FragTrap : public ClapTrap { public: FragTrap(); + FragTrap(const FragTrap &other); FragTrap(std::string name); ~FragTrap(); FragTrap &operator=(const FragTrap &other); diff --git a/ex02/ScavTrap.cpp b/ex02/ScavTrap.cpp index 85bd4f2..d2acf91 100644 --- a/ex02/ScavTrap.cpp +++ b/ex02/ScavTrap.cpp @@ -8,6 +8,14 @@ ScavTrap::ScavTrap() { attack_damage = 20; } +ScavTrap::ScavTrap(const ScavTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ScavTrap::ScavTrap(const ScavTrap &other)" << std::endl; +} + ScavTrap::ScavTrap(std::string name) { std::cout << "ScavTrap::ScavTrap(" << name << ")" << std::endl; hit_points = 100; diff --git a/ex02/ScavTrap.hpp b/ex02/ScavTrap.hpp index abbc9a7..4e16309 100644 --- a/ex02/ScavTrap.hpp +++ b/ex02/ScavTrap.hpp @@ -6,6 +6,7 @@ class ScavTrap : public ClapTrap { public: ScavTrap(); + ScavTrap(const ScavTrap &other); ScavTrap(std::string name); ~ScavTrap(); ScavTrap &operator=(const ScavTrap &other); diff --git a/ex03/ClapTrap.cpp b/ex03/ClapTrap.cpp index 5cf3e4d..ebd3192 100644 --- a/ex03/ClapTrap.cpp +++ b/ex03/ClapTrap.cpp @@ -7,6 +7,14 @@ ClapTrap::ClapTrap() std::cout << "ClapTrap::ClapTrap()" << std::endl; } +ClapTrap::ClapTrap(const ClapTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ClapTrap::ClapTrap(const ClapTrap &other)" << std::endl; +} + ClapTrap::ClapTrap(std::string name) : name(name), hit_points(10), energy_points(10), attack_damage(0) { std::cout << "ClapTrap::ClapTrap(" << name << ")" << std::endl; diff --git a/ex03/ClapTrap.hpp b/ex03/ClapTrap.hpp index 37667b0..377ae1f 100644 --- a/ex03/ClapTrap.hpp +++ b/ex03/ClapTrap.hpp @@ -12,6 +12,7 @@ protected: public: ClapTrap(); + ClapTrap(const ClapTrap &other); ClapTrap(std::string name); ~ClapTrap(); ClapTrap &operator=(const ClapTrap &other); diff --git a/ex03/DiamondTrap.cpp b/ex03/DiamondTrap.cpp index d18d15d..75dd7ff 100644 --- a/ex03/DiamondTrap.cpp +++ b/ex03/DiamondTrap.cpp @@ -11,6 +11,15 @@ DiamondTrap::DiamondTrap() : FragTrap(), ScavTrap() { ClapTrap::name = name + "_clap_name"; std::cout << "DiamondTrap::DiamondTrap()" << std::endl; } + +DiamondTrap::DiamondTrap(const DiamondTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)" << std::endl; +} + DiamondTrap::DiamondTrap(std::string name) : name(name) { const FragTrap fragtrap = FragTrap(name); @@ -21,11 +30,13 @@ DiamondTrap::DiamondTrap(std::string name) : name(name) { ClapTrap::name = name + "_clap_name"; std::cout << "DiamondTrap::DiamondTrap(" << name << ")" << std::endl; } + DiamondTrap &DiamondTrap::operator=(DiamondTrap &other) { this->name = other.name; ClapTrap::operator=(other); return *this; } + DiamondTrap::~DiamondTrap() {} void DiamondTrap::whoAmI() { diff --git a/ex03/DiamondTrap.hpp b/ex03/DiamondTrap.hpp index f3aa71c..8a1fed6 100644 --- a/ex03/DiamondTrap.hpp +++ b/ex03/DiamondTrap.hpp @@ -10,6 +10,7 @@ private: public: DiamondTrap(); + DiamondTrap(const DiamondTrap &other); DiamondTrap(std::string name); DiamondTrap &operator=(DiamondTrap &other); ~DiamondTrap(); diff --git a/ex03/FragTrap.cpp b/ex03/FragTrap.cpp index 95dc231..56a85a1 100644 --- a/ex03/FragTrap.cpp +++ b/ex03/FragTrap.cpp @@ -8,6 +8,14 @@ FragTrap::FragTrap() { attack_damage = 30; } +FragTrap::FragTrap(const FragTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "FragTrap::FragTrap(const FragTrap &other)" << std::endl; +} + FragTrap::FragTrap(std::string name) { std::cout << "FragTrap::FragTrap(" << name << ")" << std::endl; hit_points = 100; diff --git a/ex03/FragTrap.hpp b/ex03/FragTrap.hpp index ebe8776..c942ec3 100644 --- a/ex03/FragTrap.hpp +++ b/ex03/FragTrap.hpp @@ -6,6 +6,7 @@ class FragTrap : public virtual ClapTrap { public: FragTrap(); + FragTrap(const FragTrap &other); FragTrap(std::string name); ~FragTrap(); FragTrap &operator=(const FragTrap &other); diff --git a/ex03/ScavTrap.cpp b/ex03/ScavTrap.cpp index 85bd4f2..d2acf91 100644 --- a/ex03/ScavTrap.cpp +++ b/ex03/ScavTrap.cpp @@ -8,6 +8,14 @@ ScavTrap::ScavTrap() { attack_damage = 20; } +ScavTrap::ScavTrap(const ScavTrap &other) { + name = other.name; + hit_points = other.hit_points; + energy_points = other.energy_points; + attack_damage = other.attack_damage; + std::cout << "ScavTrap::ScavTrap(const ScavTrap &other)" << std::endl; +} + ScavTrap::ScavTrap(std::string name) { std::cout << "ScavTrap::ScavTrap(" << name << ")" << std::endl; hit_points = 100; diff --git a/ex03/ScavTrap.hpp b/ex03/ScavTrap.hpp index 331e89c..f1ecc36 100644 --- a/ex03/ScavTrap.hpp +++ b/ex03/ScavTrap.hpp @@ -6,6 +6,7 @@ class ScavTrap : public virtual ClapTrap { public: ScavTrap(); + ScavTrap(const ScavTrap &other); ScavTrap(std::string name); ~ScavTrap(); ScavTrap &operator=(const ScavTrap &other);