在weak_ptr容器上添加shared_ptr对象

时间:2016-08-23 22:33:07

标签: boost server client smart-pointers

我的课程基于boost :: asio教程。

此类有一个私有ctor,派生自enable_shared_from_this。

它的静态成员函数从创建的对象返回一个shared_ptr。

我想将这些指针存储在weak_ptr列表中,因此列表不需要担心它的生命周期,要么延长它。

调用者tcp_serve使用create方法实例化tcp_connection:

tcp_server:

        tcp_connection::pointer new_connection =
    tcp_connection::create(acceptor_.get_io_service());

tcp_connection:

PUBLIC:
typedef boost::shared_ptr<tcp_connection> pointer;

static pointer create(boost::asio::io_service& io_service)
{
    return pointer(new tcp_connection(io_service));
}

PRIVATE:
tcp_connection(boost::asio::io_service& io_service)
: _socket(io_service), _timer(io_service)
{
}

我正在尝试在tcp_server上创建一个列表,我尝试了很多不同类型的类型,但我无法正确地将该对象添加到列表中:

    std::list<std::weak_ptr<tcp_connection>> connections;
    connections.push_back(new_connection);

0 个答案:

没有答案