2017-06-12 76 views
2

http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/reference/async_write/overload1.html 它规定缓冲区“调用者保留底层内存块的所有权,必须保证它们在调用处理程序之前保持有效。”如何将boost :: asio :: write的缓冲区存储为shared_ptr?

request_buff_ = std::make_shared<boost::asio::const_buffer> (boost::asio::buffer(request_str)); 

其中request_str是的std :: string:

为了做到这一点,我首先通过创建一个shared_ptr缓冲区。写入之前然后解除引用:

boost::asio::write(socket, *request_buff_); 

获取以下编译错误:

'const_iterator': is not a member of 'boost::asio::const_buffer' 

回答

4

缓冲器是一个简单的参考(指针+大小元组)。它可以通过价值便宜地复制。相反,使底层存储共享,例如

auto s = std::make_shared<std::string>("payload"); 
相关问题