我正在使用一个部分由一个喜欢为简单问题提供过度复杂解决方案的人实现的代码库(例如,仅为一对类型实例化的具有两个参数的模板类)。她做的一件事是在智能指针中创建对象,然后让该对象存储对自身的弱引用。
class MyClass {
//...
boost::weak_ptr<MyClass> m_self;
//...
};
boost::shared_ptr<MyClass>
Factory::Factory::Factory::CreateMyClass() {
boost::shared_ptr<MyClass> obj(new MyClass(...));
boost::weak_ptr<MyClass> p(obj);
obj->storeSelfPointer(p);
return obj;
}
该类然后通过锁定m_self并传递生成的共享指针来使用它。
为了我自己的生命,我无法理解她试图实现什么。是否有一些模式或想法可以解释这个实现?在我看来,这完全没有意义,我想重构掉它。
编辑:我应该提到,使用从锁定m_self获得的结果智能指针的任何地方都没有保留智能指针。
std::shared_from_this
。 - Ben Voigtenable_shared_from_this
的 C++98 版本。 - Ben VoigtFactory::Factory::Factory::
是什么意思?这很有趣。 - Cheers and hth. - Alf