#ifndef TARGETGENERATOR_HPP #define TARGETGENERATOR_HPP # include # include # include "ATarget.hpp" # include class TargetGenerator { private: TargetGenerator(TargetGenerator const & other); TargetGenerator & operator=(TargetGenerator const & other); std::map arr; public: TargetGenerator() { }; ~TargetGenerator() { std::map::iterator it_begin = this->arr.begin(); std::map::iterator it_end = this->arr.end(); while (it_begin != it_end) { delete it_begin->second; ++it_begin; } this->arr.clear(); }; void learnTargetType(ATarget * atarget) { if (atarget) arr.insert(std::pair( atarget->getType(), atarget->clone() )); }; void forgetTargetType(std::string const & name) { std::map::iterator it = arr.find(name); if (it != arr.end()) delete it->second; arr.erase(name); }; ATarget * createTarget(std::string const & name) { std::map::iterator it = arr.find(name); if (it != arr.end()) return arr[name]; return NULL; }; }; #endif