/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* AForm.hpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/07/19 11:54:09 by apommier #+# #+# */ /* Updated: 2022/07/19 12:52:43 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef AFORM_HPP # define AFORM_HPP # include # include # include # include "Bureaucrat.hpp" class Bureaucrat; class AForm{ public : AForm(int signedGrade, int executionGrade, std::string name); AForm(const AForm& copy); ~AForm(); AForm &operator=(const AForm& rhs); const std::string getName() const; int getSignedGrade() const; int getExecutionGrade() const; int getIsSigned() const; void checkGrade() const = 0; void beSigned(Bureaucrat &bureaucrat); class GradeTooLowException : public std::exception { public : virtual const char* what() const throw() { return ("Signed or Execution grade is too low\n"); } }; class GradeTooHighException : public std::exception { public : virtual const char* what() const throw() { return ("Signed or Execution grade is too high\n"); } }; class signedGradeTooLowException : public std::exception { public : virtual const char* what() const throw() { return ("Signed grade is too low\n"); } }; private : std::string const _name; bool _isSigned; int _signedGrade; int _executionGrade; }; std::ostream &operator<<(std::ostream &out, const AForm &Aform); #endif