#pragma once #include #include #include "AForm.hpp" class PresidentialPardonForm : public AForm { private: const std::string _target; public: // Constructors PresidentialPardonForm() = delete; PresidentialPardonForm(std::string target); // Copy constructor and copy assignment operator PresidentialPardonForm(const PresidentialPardonForm &other); PresidentialPardonForm &operator=(const PresidentialPardonForm &other) = delete; // Move constructor and move assignment operator PresidentialPardonForm(PresidentialPardonForm &&other) noexcept; PresidentialPardonForm &operator=(PresidentialPardonForm &&other) noexcept = delete; // Destructor ~PresidentialPardonForm(); void execute(const Bureaucrat &executor) const override; const std::string getTarget() const; }; std::ostream &operator<<(std::ostream &os, const PresidentialPardonForm &form);