Итак, у меня есть такая функция:
boost::shared_ptr<my_class> get_class_by_name(std::string name)
{
typedef std::map<boost::shared_ptr<my_class>, my_description> map_t;
BOOST_FOREACH(map_t::value_type it, some_object.class_map)
{
my_description descr = it.second;
if(descr.name == name)
{
return it.first;
}
}
throw std::runtime_error("Class with such name was not found map not found!");
boost::shared_ptr<my_class> null;
return null;
}
Мне нужно, чтобы она возвратила такой boost :: shared_ptr, чтобы это была не копия ptr, а указатель, который находится внутри карты.Моя главная цель - сделать что-то подобное с результатом
boost::shared_ptr<my_class> result = get_class_by_name(name);
boost::shared_ptr<my_class> null;
result = null; //(or result.reset();)
, а затем переназначить указатель на карте с каким-либо другим ptr.(Мне не нужно удалять объект, потому что он может использоваться в каком-то другом потоке, когда я очищаю ptr карты.)