C++ 无法从';常量boost::asio::常量缓冲区1';至';boost::asio::可变缓冲区'; bool连接::接收(){ boost::shared_ptr缓冲区(新的std::string()); 套接字异步接收(boost::asio::buffer(*buffer),boost::bind(&Connection::handler),这个, boost::asio::placeholders::error,boost::asio::placeholders::bytes_transfer)); //std::cout
函数需要更改缓冲区的内容,但不能更改常量缓冲区 使用C++ 无法从';常量boost::asio::常量缓冲区1';至';boost::asio::可变缓冲区'; bool连接::接收(){ boost::shared_ptr缓冲区(新的std::string()); 套接字异步接收(boost::asio::buffer(*buffer),boost::bind(&Connection::handler),这个, boost::asio::placeholders::error,boost::asio::placeholders::bytes_transfer)); //std::cout,c++,boost,boost-asio,C++,Boost,Boost Asio,函数需要更改缓冲区的内容,但不能更改常量缓冲区 使用可变_缓冲区代替常量缓冲区。您可以找到一些信息 您需要将指针和大小传递给可变缓冲区: Error 1 error C2440: '<function-style-cast>' : cannot convert from 'const boost::asio::const_buffers_1' to 'boost::asio::mutable_buffer' e:\boost_1_46_1\boost_1_46_1\bo
可变_缓冲区
代替常量缓冲区。您可以找到一些信息
您需要将指针和大小传递给可变缓冲区:
Error 1 error C2440: '<function-style-cast>' : cannot convert from 'const boost::asio::const_buffers_1' to 'boost::asio::mutable_buffer' e:\boost_1_46_1\boost_1_46_1\boost\asio\detail\buffer_sequence_adapter.hpp 211
std::向量内容缓冲区(最大缓冲区大小);
…boost::asio::可变缓冲区(content.data(),content.size())。。。
在全局范围内声明
content\u buffer
很重要,因为async\u receive
函数正在异步访问缓冲区。如果在函数中声明缓冲区,它在收到数据之前就超出范围。为什么这个问题被否决?这个答案很好,但不太正确。缓冲区通过了ed toasync_receive
不需要在全局范围内声明。它不应该具有自动存储持续时间,但动态存储持续时间很好。OP问题中使用的示例是,缓冲区的生存期由shared_ptr
管理,只要它在Asynchronous的生存期内保持在范围内,它就可以工作s操作。这可以通过将shared_ptr
作为参数传递给绑定完成函数来实现。@Sam Miller thnx供您帮助:)为什么要提供指向非boost相关站点的链接?为什么不提供正确的链接,即:您的站点上是否有某种恶意软件?@Xander:Mirrors完全“正确”。Boost文档的镜像很难说是“一个与Boost无关的网站”。它是一个镜像,这是google上的第一个文档结果。
Error 1 error C2440: '<function-style-cast>' : cannot convert from 'const boost::asio::const_buffers_1' to 'boost::asio::mutable_buffer' e:\boost_1_46_1\boost_1_46_1\boost\asio\detail\buffer_sequence_adapter.hpp 211
std::vector<char> content_buffer(max_buffer_size);
... boost::asio::mutable_buffer(content.data(), content.size()) ...