可能重复:
enable_shared_from_this - empty internal weak pointer?
AuthConnection::AuthConnection(boost::asio::io_service& io_service)
:Connection(io_service)
{
boost::shared_ptr<AuthHandler>h (new AuthHandler( shared_from_this() ));
this->handler=h;
}
shared_from_this()应返回一个连接的ptr,但它会抛出此异常
tr1::bad_weak_ptr
我不知道这里有什么问题!
答案 0 :(得分:3)
我猜你使用shared_from_this()
是错误的。
它应该在类中使用如下:
class Y: public enable_shared_from_this<Y>
{
public:
shared_ptr<Y> f()
{
return shared_from_this();
}
}
然后你可以调用y->f()
来获取该类的this指针。
仅仅是这个,实际问题在this问题和答案中解释。这与您无法在派生对象的ctor中调用shared_from_this()
这一事实有关。