我正在使用boost的共享指针,并enable_shared_from_this启用返回共享指针.代码如下所示:
class foo : public boost::enable_shared_from_this<foo>
{
boost::shared_ptr<foo> get()
{
return shared_from_this();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么shared_from_this会抛出weak_ptr_cast异常?
如果你在堆栈上声明了foo,那么就没有其他的foo共享指针.例如:
void bar()
{
foo fooby;
fooby.get();
}
Run Code Online (Sandbox Code Playgroud)
fooby.get()会抛出weak_ptr_cast异常.
要解决这个问题,请fooby在堆上声明:
void bar()
{
boost::shared_ptr<foo> pFooby = boost::shared_ptr<foo>(new foo());
pFooby->get();
}
Run Code Online (Sandbox Code Playgroud)
另一种可能性是你在shared_from_this构造函数完成之前尝试使用,这将再次尝试返回一个尚不存在的共享指针.
| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |