这可能是一个“最佳实践”问题,但我想确保我以正确的方式进行。
我有以下课程:
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()
成语的合适用途吗?有什么我不知道的陷阱,还是有更好的方法来做到这一点?