如何从“this”对象本身内部将shared_ptr返回到当前对象

时间:2016-04-26 11:11:28

标签: c++ memory-management shared-ptr

我有一个View类的实例(使用shared_ptr在Controller拥有对象的某处实例化)

class View {
...
public:
std::shared_ptr<UIView> hitTest(cocos2d::Vec2 point, cocos2d::Event * event) {
...
};

此视图还有方法“hitTest()”,该方法应将此视图的shared_ptr返回到外部世界

hitTest() {
...
    return make_shared<View>(this);
}

如何在View中实现此方法?它应该将此VC的shared_ptr返回到外部? 显然,我不能 make_shared(this)

dataframe = pandas.DataFrame(data.foo.tolist())

因为它会彻底破坏逻辑:它只会从这个原始指针创建另一个智能指针(这与所有者的shared_ptr完全无关) 那么视图如何知道其外部的shared_ptr并从实例内部返回呢?

1 个答案:

答案 0 :(得分:3)

正如@Mohamad Elghawi正确指出的那样,你的课程必须来自std::enable_shared_from_this

#include <memory>

struct Shared : public std::enable_shared_from_this<Shared>
{
     std::shared_ptr<Shared> getPtr()
     {
         return shared_from_this();
     }
 };

只是为了完全回答这些问题,因为仅链接的答案是不受欢迎的。