我想使用shared_from_this
如下:
class example; // Forward declaration.
void bar(boost::shared_ptr<example>);
class example : public boost::enabled_shared_from_this<example>
{
void foo ()
{
bar(shared_from_this(this));
}
};
我的问题是我不想强制example.foo()
只使用由 shared_ptr 拥有的示例对象来调用。例如,我想允许以下内容:
example * p = new example;
p->foo();
但这似乎是一个错误,因为 p 不属于 a shared_ptr
。如果我错了,请纠正我。
如果我没记错的话,我该如何解决这个问题?