#pragma once #include #include "AForm.hpp" class Intern { public: // Constructors Intern(); // Copy constructor and copy assignment operator Intern(const Intern &other); Intern &operator=(const Intern &other); // Move constructor and move assignment operator Intern(Intern &&other) noexcept; Intern &operator=(Intern &&other) noexcept; // Destructor ~Intern(); AForm *makeForm(const std::string &formName, const std::string &target); private: static AForm *createShrubberyForm(const std::string &target); static AForm *createRobotomyForm(const std::string &target); static AForm *createPresidentialForm(const std::string &target); };