shared_from_thisはコンストラクタで使っちゃダメ
shared_from_this()
はコンストラクタで使えない。
つまり下のようなコードは動かない。
#include <memory> class A : public std::enable_shared_from_this { public: A() { auto self = shared_from_this(); ... } }
だからこういう場合はshared_from_this()
を含んだ初期化関数を別に用意して、オブジェクトを生成した後にその関数を呼び出せばいい。
なぜこうなるかといった理由は知らない。気になった人は各自調べて。