如何从此指针获取std :: weak_ptr <myclass>?</myclass>

时间:2012-07-01 11:15:05

标签: 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祖先派生,我需要调用{{} 1}}在构造函数上?

在我的情况下,shared_from_this()可能是某些继承自T的类,但并非总是

1 个答案:

答案 0 :(得分:0)

std::enable_shared_from_this不会从T继承,因此这里没有问题。

您无需在CTor中拨打shared_from_this,当您有this并需要相应的shared_ptr时,请拨打该电话。