Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.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
C++ 在向量中存储boost套接字_C++_Sockets_Boost_Vector_Boost Asio - Fatal编程技术网

C++ 在向量中存储boost套接字

C++ 在向量中存储boost套接字,c++,sockets,boost,vector,boost-asio,C++,Sockets,Boost,Vector,Boost Asio,这是密码。我得到以下错误: In member function ‘void socks4Server::listener(int)’: sock4.cpp:16:49: error: no matching function for call to ‘std::vector<boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp>>>::push_back(boost::

这是密码。我得到以下错误:

In member function ‘void socks4Server::listener(int)’:
sock4.cpp:16:49: error: no matching function for call to ‘std::vector<boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp>>>::push_back(boost::asio::ip::tcp::socket*)’ sockets.push_back(new tcp::socket(io_service));         
代码:


没有从原始指针到共享指针的隐式转换,因此不能直接将原始指针推送到共享指针向量上。使用以下选项之一:

sockets.push_back(shared_ptr<tcp::socket>(new tcp::socket(io_service)));
sockets.push_back(make_shared<tcp::socket>(io_service));
sockets.emplace_back(new tcp::socket(io_service));  // C++11 or later

另外,要小心将std和boost都转储到全局名称空间中。两个名称空间中都定义了许多名称,例如shared_ptr,因此这种不加区分的污染可能会导致歧义。

谢谢。这解决了问题。
sockets.push_back(shared_ptr<tcp::socket>(new tcp::socket(io_service)));
sockets.push_back(make_shared<tcp::socket>(io_service));
sockets.emplace_back(new tcp::socket(io_service));  // C++11 or later