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