Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 作为容器引用的智能指针_List_Reference_Smart Pointers_Unique Ptr - Fatal编程技术网

List 作为容器引用的智能指针

List 作为容器引用的智能指针,list,reference,smart-pointers,unique-ptr,List,Reference,Smart Pointers,Unique Ptr,我有两门课: tcp_服务器和tcp_连接 tcp_服务器有一个tcp_连接指针对象的列表,我所做的方法是将这个列表逐指针传递给tcp_连接,它将负责在销毁程序上加入并从列表中删除自己 tcp_服务器: private: std::list<std::weak_ptr<tcp_connection>> connections; // passing reference to the tcp_connection new_connection->join(&

我有两门课:

tcp_服务器和tcp_连接 tcp_服务器有一个tcp_连接指针对象的列表,我所做的方法是将这个列表逐指针传递给tcp_连接,它将负责在销毁程序上加入并从列表中删除自己

tcp_服务器:

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

// passing reference to the tcp_connection
new_connection->join(&connections);
private:
std::列出连接;
//将引用传递到tcp_连接
新建连接->连接(&U);
tcp_连接:

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());
}
private:
std::列表*连接;
公众的
无效连接(标准::列表*con)
{
连接=con;
连接->推回(从这个()共享);
}
嗯。在这一点上,一切都很顺利;然而,若我试图删除tcp_连接销毁程序上的连接指针,服务器就会崩溃

我试图弄乱智能指针,但我迷路了。在将tcp_服务器方法传递给JOIN之前,是否在tcp_服务器方法上创建唯一的_ptr,并将其作为引用传递给带有std::move的tcp_连接

有没有办法提高效率