I have this class, the object manager, it looks like this:
Code:
class Object_Manager
{
public:
Object_Manager(){}
~Object_Manager(){}
typedef boost::shared_ptr<Object> Raw_Object;
typedef std::map<std::string, Raw_Object> Objects;
typedef boost::weak_ptr<Object> Data_Observer;
Data_Observer Access_Object(std::string Filename)
{
Objects::iterator it = Managed_Objects.find(Filename);
// check if the manager exists in the map
if (it == Managed_Objects.end())
{
// if not throw an error
std::cout << "Object does not exist!" << std::endl;
}
else
{
// if so return a pointer to the manager
return Data_Observer(it->second);
}
}
int Add_Object(std::string Filename, Object * Obj)
{
Objects::iterator it = Managed_Objects.find(Filename);
if(it == Managed_Objects.end())
{
Managed_Objects.insert(std::make_pair(Filename, Obj));
}
else
{
std::cout << "Object already exists" << std::endl;
}
}
void Remove_Object(std::string Filename)
{
Objects::iterator it = Managed_Objects.find(Filename);
if(it == Managed_Objects.end())
{
std::cout << "Object does not exist, can't remove!" << std::endl;
}
else
{
Managed_Objects.erase(it);
}
}
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
// serialize base class information
ar & Managed_Objects;
}
Objects Managed_Objects;
};
My question is, what should I return if the object doesn't exist in the manager, what can my utility class use to determine a different course of action in case this happens?