Я довольно новичок в C ++, и я написал класс и функцию ниже:
class Person {
public:
boost::shared_ptr<Details> GetDetails(const std::string& name) const;
...
private:
std::map<std::string, boost::shared_ptr<Details> > map;
...
};
inline
boost::shared_ptr<Details>
Person::GetDetails(const std::string& name) const {
return map.find(name)->second;
}
Это работает нормально, но мне сказали, чтобы функция возвращала указатель, а в случае сбоя поиска возвращала NULL.
Я попробовал пару вещей, одна из которых:
class Person {
public:
boost::shared_ptr<Details> *GetDetails(const std::string& name) const;
...
private:
std::map<std::string, boost::shared_ptr<Details> > map;
...
};
inline
boost::shared_ptr<Details>
*Person::GetDetails(const std::string& name) const {
if (!map.find(name)->first.empty()) {
return *map.find(name)->second;
}
return NULL;
}
что дает мне ошибку:
error: cannot convert 'Details' to 'boost::shared_ptr<Details>*' in return
Я не совсем уверен, что здесь делать. Любая помощь или ресурсы будут очень полезны.
Спасибо.