#pragma once #include #include #include #define HIGHEST_GRADE 1 #define LOWEST_GRADE 150 class Bureaucrat { private: const std::string _name; int _grade; public: Bureaucrat() = delete; Bureaucrat(std::string name, int grade); Bureaucrat(Bureaucrat &other); ~Bureaucrat(); Bureaucrat &operator=(Bureaucrat &other) = delete; Bureaucrat &operator++(); // Pre-increment Bureaucrat operator++(int); // Post-increment Bureaucrat &operator--(); // Pre-decrement Bureaucrat operator--(int); // Post-decrement int getGrade() const; const std::string getName() const; void signForm(class AForm &form); class GradeTooHighException : public std::exception { const char *what() const throw(); }; class GradeTooLowException : public std::exception { const char *what() const throw(); }; }; std::ostream &operator<<(std::ostream &os, const Bureaucrat &bureaucrat);