Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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::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 - Fatal编程技术网

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 to
async_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()) ...