如何从"this"对象本身内部将shared_ptr返回到当前对象
how to return shared_ptr to current object from inside the "this" object itself
我有一个视图类的实例(使用 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(这个)
hitTest() {
...
return make_shared<View>(this);
}
因为它会完全破坏逻辑:它只会从这个原始指针创建另一个智能指针(这与所有者的shared_ptr完全无关)那么视图如何知道其外部shared_ptr并从实例内部返回它呢?
正如
@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();
}
};
只是为了完全回答这个问题,因为只有链接的答案是不受欢迎的。
相关文章:
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 从我的对象返回静态数组
- 将unique_ptr作为<Object>unique_ptr<常量对象返回>
- 从右值对象返回成员
- 视觉对象 返回 C++ 中的双精度值
- 为什么类型为 sf::Text 的对象返回不同的 getPosition().y 和 getLocalBounds().
- std::min_element 从类对象返回意外结果
- C++无效的对象返回语义
- const引用是否延长临时对象返回的临时对象的寿命
- 将 NULL 作为对象返回时未收到任何警告
- 如何在 C# 中从 com 对象返回数组(double[])
- 从重载运算符返回引用,并使用临时对象返回表达式
- Cin 对象返回值 c++
- 将变量作为类对象返回
- 使用可更改对象返回只读的最佳方法是什么
- 如何在Cython中从另一个包装对象返回包装的c++对象
- 当对象返回时,c++动态数组被清除
- 从带有动态字段的函数、对象返回
- 从堆栈上的匿名对象返回对*this的引用