transform d03 ex01 assignation function in case of two constructors, tests of assignation and copy operation not successful
This commit is contained in:
@@ -12,7 +12,7 @@ int ClapTrap::_totalNumber = 0;
|
||||
|
||||
ClapTrap::ClapTrap( void ) {
|
||||
|
||||
std::cout << "claptrap created without name\n";
|
||||
std::cout << "claptrap default creation without name\n";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@ ClapTrap::~ClapTrap( void ) {
|
||||
*/
|
||||
|
||||
ClapTrap::ClapTrap( ClapTrap const & src ) {
|
||||
std::cout << _class << " " << _name << " copied\n";
|
||||
*this = src;
|
||||
std::cout << _class << " " << _name << " copied\n";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -46,6 +46,9 @@ ClapTrap & ClapTrap::operator=( ClapTrap const & rhs ) {
|
||||
this->_hit = rhs.getHit();
|
||||
this->_energy = rhs.getEnergy();
|
||||
this->_attack = rhs.getAttack();
|
||||
this->_class = rhs.getClass();
|
||||
this->_name = rhs.getName();
|
||||
this->_number = rhs.getNumber();
|
||||
}
|
||||
|
||||
std::cout << _class << " " << _name << " assigned\n";
|
||||
@@ -65,9 +68,9 @@ ClapTrap::ClapTrap( std::string name ) : _name(name) {
|
||||
_hit = 10;
|
||||
_energy = 10;
|
||||
_attack = 1;
|
||||
_number = _getNumber();
|
||||
_number = getNumber();
|
||||
|
||||
std::cout << _class << " " << _name << " created with number " << _number << "\n";
|
||||
std::cout << _class << " " << _name << " named creation with number " << _number << "\n";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -76,10 +79,11 @@ ClapTrap::ClapTrap( std::string name ) : _name(name) {
|
||||
*/
|
||||
|
||||
std::string ClapTrap::getName() const {return _name;}
|
||||
std::string ClapTrap::getClass() const {return _class;}
|
||||
int ClapTrap::getHit() const {return _hit;}
|
||||
int ClapTrap::getEnergy() const {return _energy;}
|
||||
int ClapTrap::getAttack() const {return _attack;}
|
||||
int ClapTrap::_getNumber() {return ClapTrap::_totalNumber;}
|
||||
int ClapTrap::getNumber() const {return ClapTrap::_totalNumber;}
|
||||
void ClapTrap::_increaseNumber() {ClapTrap::_totalNumber++;}
|
||||
|
||||
/*
|
||||
|
||||
@@ -21,26 +21,27 @@ public:
|
||||
void beRepaired(unsigned int amount);
|
||||
|
||||
std::string getName() const;
|
||||
std::string getClass() const;
|
||||
int getHit() const;
|
||||
int getEnergy() const;
|
||||
int getAttack() const;
|
||||
int getNumber() const;
|
||||
|
||||
protected:
|
||||
|
||||
std::string const _name;
|
||||
std::string _name;
|
||||
std::string _class;
|
||||
int _hit;
|
||||
int _energy;
|
||||
int _attack;
|
||||
int _number;
|
||||
|
||||
int _getNumber();
|
||||
void _increaseNumber();
|
||||
|
||||
private:
|
||||
|
||||
ClapTrap( void ); // default/parametric constructor
|
||||
|
||||
private:
|
||||
|
||||
static int _totalNumber;
|
||||
|
||||
};
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
#include "ScavTrap.hpp"
|
||||
|
||||
/*
|
||||
* assign values for default or secondary constructors
|
||||
*/
|
||||
|
||||
void ScavTrap::assignValues( ScavTrap & src ) {
|
||||
src._class = "ScavTrap";
|
||||
src._hit = 100;
|
||||
src._energy = 50;
|
||||
src._attack = 20;
|
||||
}
|
||||
|
||||
/*
|
||||
* parameters constructor
|
||||
*/
|
||||
|
||||
ScavTrap::ScavTrap( std::string name ) : ClapTrap(name) {
|
||||
|
||||
_class = "ScavTrap";
|
||||
_hit = 100;
|
||||
_energy = 50;
|
||||
_attack = 20;
|
||||
|
||||
std::cout << _class << " " << ScavTrap::_name << " created with number " << _number << "\n";
|
||||
|
||||
assignValues(*this);
|
||||
std::cout << _class << " " << _name << " named creation with number " << _number << "\n";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -17,7 +26,7 @@ ScavTrap::ScavTrap( std::string name ) : ClapTrap(name) {
|
||||
*/
|
||||
|
||||
ScavTrap::~ScavTrap( void ) {
|
||||
std::cout << _class << " " << ScavTrap::_name << " destructed\n";
|
||||
std::cout << _class << " " << _name << " destructed\n";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,5 +35,5 @@ ScavTrap::~ScavTrap( void ) {
|
||||
*/
|
||||
|
||||
void ScavTrap::guardGate() {
|
||||
std::cout << _class << " " << ScavTrap::_name << " entered special mode Gate Keeper\n";
|
||||
std::cout << _class << " " << _name << " entered special mode Gate Keeper\n";
|
||||
}
|
||||
|
||||
@@ -9,11 +9,15 @@ class ScavTrap : public ClapTrap {
|
||||
|
||||
public:
|
||||
|
||||
ScavTrap(std::string name);
|
||||
~ScavTrap();
|
||||
ScavTrap(std::string name);
|
||||
|
||||
void guardGate();
|
||||
|
||||
private:
|
||||
|
||||
void assignValues( ScavTrap & src);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -49,7 +49,17 @@ int main() {
|
||||
ClapTrap robot1("robot1");
|
||||
ScavTrap robot2("robot2");
|
||||
ScavTrap robot3("robot3");
|
||||
ClapTrap robot4("robot4");
|
||||
|
||||
ScavTrap robotmp1("robot4");
|
||||
ClapTrap robot4(robotmp1); // PBM : it says it's a ScavTrap but it has no guardGate()...
|
||||
//robot4.guardGate();
|
||||
|
||||
ScavTrap robotmp2("robot5");
|
||||
ScavTrap robot5(robotmp2);
|
||||
robot5.guardGate();
|
||||
|
||||
// ClapTrap robotmp3("robot6"); // PBM : assignation doesn't work...
|
||||
// ScavTrap robot6(robotmp3);
|
||||
|
||||
goAttack(robot1, robot2);
|
||||
goAttack(robot2, robot1);
|
||||
|
||||
BIN
d03/ex01/robots
BIN
d03/ex01/robots
Binary file not shown.
Reference in New Issue
Block a user