これはおそらく「ベストプラクティス」の質問ですが、これが正しい方法で行われていることを確認したかったのです。
私は次のクラスを持っています:
typedef boost::shared_ptr<MyClass> MyClassPtr;
class MyClass final : public boost::enable_shared_from_this<MyClass> {
public:
/* ctors/dtor ommitted */
MyClassPtr method1() {
// does something
return shared_from_this();
};
MyClassPtr method2() {
// does something
return shared_from_this();
};
}; // eo class MyClass
これは、呼び出しを簡単に連鎖させたかったためです。
MyClassPtr ptr(myClassFactory.createMyClass());
ptr->method1()->method2()->methodX(); // etc...
shared_from_this()
これはイディオムの適切な使用法ですか?私が知らない落とし穴はありますか、それともこれを行うためのより良い方法はありますか?