小编jus*_*hen的帖子

抛出 'std::bad_weak_ptr' 实例后终止调用what(): bad_weak_ptr?

我正在学习智能指针和shared_from_this. 在类继承关系中,会很难理解。

我有两个基类CACB,它们派生自enable_shared_from_this,子类CC派生自CACB。我想从类自身中取出三个类的共享指针,所以我写了sharedCAfromThis,sharedCBfromThissharedCCfromthis

class CA  : private enable_shared_from_this<CA> {
public:
    shared_ptr<CA> sharedCAfromThis() { return shared_from_this();  }
    virtual ~CA() {};
    void print() {
        cout << "CA" << endl;
    }
};

class CB : private enable_shared_from_this<CB> {
public:
    shared_ptr<CB> sharedCBfromThis() { return shared_from_this();  }
    virtual ~CB() {};
    void print() {
        cout << "CB" << endl;
    }
};

class CC : public CA, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance shared-ptr weak-ptr enable-shared-from-this

6
推荐指数
1
解决办法
5924
查看次数