#ifndef CAGE #define CAGE #include #include #include "Zoo.hh" namespace zoo { /** * @brief Used to store the location, size, and number of a single cage at the * zoo */ class Cage { private: int cageNumber; int cageSqFt; std::string cageLocation; Zoo *zoo; public: explicit Cage(int _cageNumber = 0, int _cageSqFt = 0, std::string _cageLocation = "", Zoo *_zoo = nullptr) : cageNumber(_cageNumber), cageSqFt(_cageSqFt), cageLocation(std::move(_cageLocation)), zoo(_zoo) {} /** * @brief Set the number of a cage */ void setCageNumber(int); /** * @brief Set the location of a cage */ void setCageLocation(std::string); /** * @brief Set the square footage of a cage */ void setCageSqFt(int); /** * @brief Get the number of a cage */ [[nodiscard]] int getCageNumber() const; /** * @brief Get the location of a cage */ std::string getCageLocation(); /** * @brief Get the square footage of a cage */ [[nodiscard]] int getCageSqFt() const; private: static bool validateSqFt(int); bool validateCageNumber(int); }; } // namespace zoo #endif // CAGE