#ifndef CLAPTRAP_HPP # define CLAPTRAP_HPP # include # ifndef DEBUG # define DEBUG 0 # endif class ClapTrap { private: // Attributes static std::string const _defaultName; static unsigned int const _defaultHitPoints; static unsigned int const _defaultEnergyPoints; static unsigned int const _defaultAttackDamages; protected: // Attributes std::string _name; unsigned int _hitPoints; unsigned int _energyPoints; unsigned int _attackDamages; // Constructors ClapTrap( std::string const &name, unsigned int const hitPoints, unsigned int const energyPoints, unsigned int const attackDamages); public: // Constructors ClapTrap(std::string const &name = ClapTrap::_defaultName); ClapTrap(ClapTrap const &src); // Destructors virtual ~ClapTrap(void); // Accessors std::string const &getName(void) const; unsigned int getHitPoints(void) const; unsigned int getEnergyPoints(void) const; unsigned int getAttackDamages(void) const; // Member functions virtual void attack(std::string const &target); void beRepaired(unsigned int const amount); void takeDamage(unsigned int const amount); // Operators ClapTrap &operator=(ClapTrap const &rhs); }; std::ostream &operator<<(std::ostream &o, ClapTrap const &rhs); #endif