TR1 :: bad_weak_ptr

时间:2011-06-09 07:07:28

标签: c++ boost-asio shared-ptr

  

可能重复:
  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

我不知道这里有什么问题!

1 个答案:

答案 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()这一事实有关。