c++ - 如何从此指针获取 std::weak_ptr<MyClass> ?

标签 c++ c++11 this shared-ptr weak-ptr

例子如下:

tempalate <class T> class MyClass : public T {
    public: 
    MyClass(std::weak_ptr<MyClass> parent) {
         //--------------------------------------+
         //                                      |
         //                                      V
         auto child = std::make_shared<MyClass>(this);
    }
};

该怎么做?如果我需要导出 MyClass来自 std::enable_shared_from_this<MyClass<T>> ,我如何在没有多重继承的情况下做到这一点,因为MyClass已经派生自另一个 T祖先,我需要调用shared_from_this()在构造函数上?

以我为例 T可能是从 enable_shared_from_this<T> 继承的某个类, 但并不总是

最佳答案

std::enable_shared_from_this 没有继承自T,所以这里没有问题。

您不需要在 CTor 中调用 shared_from_this,当您有 this 并且需要相应的 shared_ptr 时,您会调用它。

关于c++ - 如何从此指针获取 std::weak_ptr<MyClass> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281478/

相关文章:

c++ - 在对象声明上下文中获取此类型

JavaSCript 示例(Oreilly 书籍)

c++ - 应用程序在 vs2013 中工作,但在用作独立 exe 时显示工件

java - 在 Ubuntu 上编译 OpenCV

c++ - 为什么采用 std::initializer_list 的构造函数不首选双花括号语法

javascript - 将函数参数添加到空数组中

javascript - 如何在回调中访问正确的“this”?

c++ - 具有可变参数模板的递归继承和继承参数问题

C++重载>>运算符奇怪的编译错误

c++ - 在 C++ 中读取内存时出现段错误