gpt4 book ai didi

c++ - 更改函数以返回指针

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:50 25 4
gpt4 key购买 nike

我是 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

我不完全确定在这里做什么。任何帮助或资源都会有很大帮助。

谢谢。

最佳答案

你想返回一个共享指针的地址,所以你需要使用&,而不是*

请注意,处理指向共享指针的指针有点奇怪。如果找不到该项目,为什么不直接返回一个空的共享指针?

关于c++ - 更改函数以返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7192506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com