You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

80 lines
2.6 KiB

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Bureaucrat.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/24 13:06:55 by narnaud #+# #+# */
/* Updated: 2022/06/26 16:00:28 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Bureaucrat.hpp"
/* Constructors */
Bureaucrat::Bureaucrat(void) {}
Bureaucrat::Bureaucrat(const string name,
int grade) throw(Bureaucrat::GradeTooHighException,
Bureaucrat::GradeTooLowException)
: _name(name) {
if (grade < 1)
throw Bureaucrat::GradeTooHighException();
if (grade > 150)
throw Bureaucrat::GradeTooLowException();
_grade = grade;
}
/* copy const. */
Bureaucrat::Bureaucrat(Bureaucrat const &src) { (void)src; }
/* assign const. */
Bureaucrat &Bureaucrat::operator=(Bureaucrat const &src) {
(void)src;
return (*this);
}
/* Destructor */
Bureaucrat::~Bureaucrat(void) {}
/* Getters */
const string Bureaucrat::getName(void) const { return (_name); }
int Bureaucrat::getGrade(void) const { return (_grade); }
/* Setters */
void Bureaucrat::incrGrade(int diff) throw(Bureaucrat::GradeTooHighException) {
int new_grade = _grade - diff;
if (new_grade < 1)
throw Bureaucrat::GradeTooHighException();
_grade = new_grade;
cout << _name << " grade increased." << endl;
}
void Bureaucrat::decrGrade(int diff) throw(Bureaucrat::GradeTooLowException) {
int new_grade = _grade + diff;
if (new_grade > 150)
throw Bureaucrat::GradeTooLowException();
_grade = new_grade;
cout << _name << " grade decreased." << endl;
}
/* Exceptions */
const char *Bureaucrat::GradeTooHighException::what(void) const throw() {
return ("error: grade is too high for a bureaucrat");
}
const char *Bureaucrat::GradeTooLowException::what(void) const throw() {
return ("error: grade was too low for a bureaucrat");
}
/* Stream */
std::ostream &operator<<(std::ostream &out, Bureaucrat const &b) {
out << b.getName() << "(" << b.getGrade() << ")";
return (out);
}