2

次に例を示します。

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>>ため、多重継承なしでそれを行うにはどうすればよいですか?コンストラクターを呼び出す必要がありますか?MyClassTshared_from_this()

私の場合、Tから継承されたクラスである可能性がありますenable_shared_from_this<T>が、常にではありません

4

1 に答える 1

0

std::enable_shared_from_thisは T から継承しないので、問題ありません。

shared_from_thisCTorを呼び出す必要はありません。thisそれぞれのshared_ptr.

于 2012-07-01T12:05:36.013 に答える