如何从 "this" 对象本身 return shared_ptr 到当前对象

how to return shared_ptr to current object from inside the "this" object itself

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

class ViewController {
protected:
    std::shared_ptr<View> view_;
};

此视图也有方法 "hitTest()" 应该 return 此视图的 shared_ptr 对外

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

如何从视图内部实现此方法?应该return这个VC的shared_ptr到外面? 显然,我不能make_shared(这个)

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

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

正如@Mohamad Elghawi 正确指出的那样,您的 class 需要派生自 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();
     }
 };

只是为了完整地回答这个问题,因为 link 只有答案是不受欢迎的。