CPP03 1.0
読み取り中…
検索中…
一致する文字列を見つけられません
DiamondTrap.cpp
[詳解]
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* DiamondTrap.cpp :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: kamitsui <kamitsui@student.42tokyo.jp> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2025/05/12 17:32:10 by kamitsui #+# #+# */
9/* Updated: 2025/05/15 13:17:39 by kamitsui ### ########.fr */
10/* */
11/* ************************************************************************** */
12
22#include "DiamondTrap.hpp"
23#include <iostream>
24
28DiamondTrap::DiamondTrap() : ClapTrap("Default_clap_name"), FragTrap("Default"), ScavTrap("Default") {
29 name = "Default";
30 hitPoints = defaultHitPoints;
31 energyPoints = defaultEnergyPoints;
32 attackDamage = defaultAttackDamage;
33 std::cout << "DiamondTrap Default constructor called" << std::endl;
34}
35
46 : ClapTrap(newName + "_clap_name"), FragTrap(newName), ScavTrap(newName) {
47 name = newName;
48 hitPoints = defaultHitPoints;
49 energyPoints = defaultEnergyPoints;
50 attackDamage = defaultAttackDamage;
51 std::cout << "DiamondTrap String constructor called for " << name << std::endl;
52}
53
59 : ClapTrap(other.ClapTrap::name, other.hitPoints, other.energyPoints, other.attackDamage), FragTrap(other),
60 ScavTrap(other), name(other.name) {
61 std::cout << "DiamondTrap Copy constructor called for " << name << std::endl;
62}
63
67DiamondTrap::~DiamondTrap() { std::cout << "DiamondTrap Destructor called for " << name << std::endl; }
68
75 std::cout << "DiamondTrap Assignation operator called for " << name << std::endl;
76 if (this != &other) {
77 ClapTrap::operator=(other); // Call ClapTrap's assignment operator (via FragTrap or ScavTrap)
78 this->name = other.name;
79 }
80 return *this;
81}
82
87void DiamondTrap::attack(const std::string &target) {
88 ScavTrap::attack(target); // Use ScavTrap's attack
89}
90
95const std::string &DiamondTrap::getName() const { return name; }
96
101const std::string &DiamondTrap::getClapTrapName() const { return ClapTrap::name; }
102
109 std::cout << "DiamondTrap name: " << name << ", ClapTrap name: " << ClapTrap::name << std::endl;
110}
Header file for the DiamondTrap class, inheriting from FragTrap and ScavTrap.
Represents a basic robot character.
Definition ClapTrap.hpp:34
ClapTrap & operator=(const ClapTrap &other)
Copy assignment operator implementation.
Definition ClapTrap.cpp:58
Represents a DiamondTrap robot, inheriting from both FragTrap and ScavTrap.
void attack(const std::string &target)
Attack function implementation for DiamondTrap, using ScavTrap's attack.
DiamondTrap()
Default constructor implementation for DiamondTrap.
virtual const std::string & getName() const
Gets the DiamondTrap's private name.
virtual ~DiamondTrap()
Virtual destructor implementation for DiamondTrap.
static const unsigned int defaultAttackDamage
DiamondTrap & operator=(const DiamondTrap &other)
Copy assignment operator implementation for DiamondTrap.
static const unsigned int defaultHitPoints
void whoAmI()
whoAmI function implementation for DiamondTrap.
const std::string & getClapTrapName() const
Gets the ClapTrap's name associated with the DiamondTrap.
static const unsigned int defaultEnergyPoints
Represents a FragTrap robot, a specialized type derived from ClapTrap.
Definition FragTrap.hpp:38
Represents a ScavTrap robot, a specialized type derived from ClapTrap.
Definition ScavTrap.hpp:38
virtual void attack(const std::string &target)
Attack function implementation for ScavTrap.
Definition ScavTrap.cpp:77
T endl(T... args)