【发布时间】:2016-08-20 04:22:12
【问题描述】:
我有一个 View 类的实例(使用 shared_ptr 在控制器拥有对象的某处实例化)
class ViewController {
protected:
std::shared_ptr<View> view_;
};
这个视图也有方法“hitTest()”应该把这个视图的shared_ptr返回给外界
class View {
...
public:
std::shared_ptr<UIView> hitTest(cocos2d::Vec2 point, cocos2d::Event * event) {
...
};
如何从视图内部实现此方法?它应该将这个 VC 的 shared_ptr 返回到外部吗? 显然,我不能 make_shared(this)
hitTest() {
...
return make_shared<View>(this);
}
因为它会完全破坏逻辑:它只会从这个原始指针创建另一个智能指针(这与所有者的 shared_ptr 完全无关) 那么视图如何知道其外部的 shared_ptr 并从实例内部返回呢?
【问题讨论】:
-
共享和唯一指针通常处理所有权。怎么可能是自己拥有的实例?
-
我想你可能正在寻找std::enable_shared_from_this
-
@MohamadElghawi 谢谢!
-
@Angew 谢谢大家,看来这就是解决方案
标签: c++ memory-management shared-ptr