Something went wrong. Try again.
Java--'s try/catch projects.intra.42.fr/projects/cpp-module-05
Something went wrong. Try again.
1.7 kB · 66 lines
C++
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include <Bureaucrat.hpp>
Bureaucrat::Bureaucrat() : name("Franck Leboeuf") { std::cout << "Bureaucrat default constructor called" << std::endl; setGrade(150);}
Bureaucrat::Bureaucrat(const Bureaucrat& other) : name(other.name), grade(other.grade) { std::cout << "Bureaucrat copy constructor called" << std::endl;}
Bureaucrat::Bureaucrat(const std::string& name) : name(name) { std::cout << "Bureaucrat (name) constructor called" << std::endl; setGrade(150);}
Bureaucrat::Bureaucrat(const std::string& name, const unsigned short grade) : name(name) { std::cout << "Bureaucrat (name, grade) constructor called" << std::endl; setGrade(grade);}
void Bureaucrat::incrementGrade() { std::cout << "Increment grade called" << std::endl; setGrade(grade - 1);}
void Bureaucrat::decrementGrade() { std::cout << "Decrement grade called" << std::endl; setGrade(grade + 1);}
const std::string& Bureaucrat::getName() const { return name;}
unsigned short Bureaucrat::getGrade() const { return grade;}
Bureaucrat& Bureaucrat::operator=(const Bureaucrat& other) { std::cout << "Bureaucrat assignment operator called" << std::endl;
if (this != &other) grade = other.grade;
return *this;}
Bureaucrat::~Bureaucrat() { std::cout << "Bureaucrat destructor called" << std::endl;}
void Bureaucrat::setGrade(const unsigned short grade) { if (grade > 150) throw GradeTooLowException();
if (grade < 1) throw GradeTooHighException();
this->grade = grade;}
std::ostream& operator<<(std::ostream& ostream, const Bureaucrat& bureaucrat) { ostream << bureaucrat.getName() << ", bureaucrat grade " << bureaucrat.getGrade() << "."; return ostream;}