fix(ex03): never construct more than one ClapTrap when constructing DiamondTrap

This commit is contained in:
Khaïs COLIN 2025-05-28 11:17:58 +02:00
parent 812791dc77
commit a843186f5e
Signed by: logistic-bot
SSH key fingerprint: SHA256:3zI3/tx0ZpCLHCLPmEaGR4oeYCPMCzQxXhXutBmtOAU
5 changed files with 33 additions and 18 deletions

View file

@ -1,12 +1,10 @@
#include "DiamondTrap.hpp"
#include <iostream>
DiamondTrap::DiamondTrap() : FragTrap(), ScavTrap() {
const FragTrap fragtrap = FragTrap();
hit_points = fragtrap.get_hit_points();
energy_points = ScavTrap::energy_points;
attack_damage = fragtrap.get_attack_damage();
DiamondTrap::DiamondTrap() {
hit_points = FragTrap::default_hit_points;
energy_points = ScavTrap::default_energy_points;
attack_damage = FragTrap::default_attack_damage;
ClapTrap::name = name + "_clap_name";
std::cout << "DiamondTrap::DiamondTrap()" << std::endl;
@ -17,15 +15,14 @@ DiamondTrap::DiamondTrap(const DiamondTrap &other) {
hit_points = other.hit_points;
energy_points = other.energy_points;
attack_damage = other.attack_damage;
std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)" << std::endl;
std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)"
<< std::endl;
}
DiamondTrap::DiamondTrap(std::string name) : name(name) {
const FragTrap fragtrap = FragTrap(name);
hit_points = fragtrap.get_hit_points();
energy_points = ScavTrap::energy_points;
attack_damage = fragtrap.get_attack_damage();
hit_points = FragTrap::default_hit_points;
energy_points = ScavTrap::default_energy_points;
attack_damage = FragTrap::default_attack_damage;
ClapTrap::name = name + "_clap_name";
std::cout << "DiamondTrap::DiamondTrap(" << name << ")" << std::endl;

View file

@ -1,11 +1,15 @@
#include "FragTrap.hpp"
#include <iostream>
const unsigned int FragTrap::default_hit_points(100);
const unsigned int FragTrap::default_energy_points(100);
const unsigned int FragTrap::default_attack_damage(30);
FragTrap::FragTrap() {
std::cout << "FragTrap::FragTrap()" << std::endl;
hit_points = 100;
energy_points = 100;
attack_damage = 30;
hit_points = FragTrap::default_hit_points;
energy_points = FragTrap::default_energy_points;
attack_damage = FragTrap::default_attack_damage;
}
FragTrap::FragTrap(const FragTrap &other) {

View file

@ -12,6 +12,11 @@ public:
FragTrap &operator=(const FragTrap &other);
void highFivesGuys();
protected:
static const unsigned int default_hit_points;
static const unsigned int default_energy_points;
static const unsigned int default_attack_damage;
};
#endif

View file

@ -1,11 +1,15 @@
#include "ScavTrap.hpp"
#include <iostream>
const unsigned int ScavTrap::default_hit_points(100);
const unsigned int ScavTrap::default_energy_points(50);
const unsigned int ScavTrap::default_attack_damage(20);
ScavTrap::ScavTrap() {
std::cout << "ScavTrap::ScavTrap()" << std::endl;
hit_points = 100;
energy_points = 50;
attack_damage = 20;
hit_points = ScavTrap::default_hit_points;
energy_points = ScavTrap::default_energy_points;
attack_damage = ScavTrap::default_attack_damage;
}
ScavTrap::ScavTrap(const ScavTrap &other) {

View file

@ -12,6 +12,11 @@ public:
ScavTrap &operator=(const ScavTrap &other);
void guardGate();
protected:
static const unsigned int default_hit_points;
static const unsigned int default_energy_points;
static const unsigned int default_attack_damage;
};
#endif