智能指针作为容器的参考

时间:2016-08-24 13:21:46

标签: list reference smart-pointers unique-ptr

我有两个班级:

tcp_server和tcp_connection tcp_server有一个tcp_connection指针对象的列表,我正在做的是通过指针将这个列表传递给tcp_connection,它将负责从驱逐舰上的列表中加入和删除它自己。

tcp_server:

private:
std::list<std::weak_ptr<tcp_connection>> connections;

// passing reference to the tcp_connection
new_connection->join(&connections);

tcp_connection:

private:
std::list<std::weak_ptr<tcp_connection>>* connections;

public
void join(std::list<std::weak_ptr<tcp_connection>>* con)
{
    connections = con;
    connections->push_back(shared_from_this());
}

确定。一切都运作良好;但是,如果我尝试删除tcp_connection驱逐舰上的连接指针,服务器崩溃。

我试图弄乱智能指针,但我迷失了它。在将tcp_server方法传递给JOIN之前,是否在tcp_server方法上创建unique_ptr,并使用std :: move传递给tcp_connection作为参考?

如何提高效率?

0 个答案:

没有答案