【发布时间】:2011-09-22 21:26:04
【问题描述】:
我想知道共享指针是什么。所以,我用谷歌搜索了一下,对它们有了一些了解。我遇到了一个网站,它提供了 smaprt 指针概念的简要概述。但是,我无法理解他们想要通过以下方式传达的内容(或者更确切地说是如何实现)。
成员函数中的共享指针
有时在其成员函数中需要一个指向当前对象的共享指针。 Boost 提供了一个名为 enable_shared_from_this 的 mixin 模板类,它定义了一个名为 shared_from_this() 的无参数成员函数。它返回一个指向 this 的共享指针。在第一次使用此方法之前,必须至少存在一个指向此对象的共享指针的实例;否则它有未定义的结果(通常是崩溃)。保证满足条件的最好方法是使构造函数受保护并提供一个工厂方法,该方法返回一个指向新创建对象的共享指针。
class Foo : public enable_shared_from_this<Foo> {
public:
void someMethod() {
boost::shared_ptr<Foo> this_ = shared_from_this();
// use pointer...
}
...
static boost::shared_ptr<Foo> create() {
return boost::shared_ptr<Foo>(new Foo());
}
protected:
Foo() { ... }
...
};
谁能告诉我如何创建这个类的对象以及 create() 方法在这里扮演什么角色? (我想在我们说话的时候弄清楚这一点……但以防万一!:))
谢谢, 帕万,
【问题讨论】:
标签: c++ shared-ptr smart-pointers