0

この質問は、この質問のフォローアップの質問です:元の質問

から継承するクラスstd::enable_shared_from_thisがあり、このクラスにはstd::shared_ptr<Self>

クラスの詳細が完全で成功したことを知った後、このクラスのコンストラクターのいずれかで、保存さstd::shared_ptr<Self>れているものをshared this.

例:

class Self : public std::enable_shared_from_this<Self> {
private:
    std::shared_ptr<Self> me_; // Or
    std::unique_ptr>Self> me_;

public:
    Self ( /*some parameters*/ );
};

Self::Self( /* some parameters */ ) {
    // Check parameters for creation

    // Some work or initialization being done

    // If all is successful and construction of this class is about
    // to leave scope, then set the smart pointer to the this*

    // How to do ...
    me_ = std::enable_shared_from_this<Self>::shared_from_this();
    // Properly if this is even possible at all.
}
4

2 に答える 2

2

できません。その時点で、shared_ptr現在のSelfインスタンスを指す はまだ存在しません。コンストラクターが戻るまで存在できない可能性があります。を指す がすでに存在するshared_from_this()という前提条件があります。shared_ptrthis

于 2017-01-16T19:31:47.597 に答える