#ifndef FACTORY_HPP #define FACTORY_HPP #include <array> #include <string> #include <unordered_map> #include <utility> #include <vector> #include "parts.hpp" // Gear Concrete Factory class GearFactory { public: explicit GearFactory(std::string name_="GearFactory") : name(std::move(name_)) {} Part* requestPart(); Part* requestPart(std::string partName, float price); void showStock() const; std::string getName() const { return name;} protected: Part* makePart(); Part* makePart(std::string name, float price); private: std::string name; std::unordered_map<std::string, int> inventory; }; #endif // FACTORY_HPP