我已经坚持了一段时间了。我想发送以下内容:
boost::shared_ptr<uint8_t[]> m_data
通过电线使用:
_socket.async_send_to(boost::asio::buffer(m_data), m_remote_endpoint,
boost::bind(&UDPServer::handle_send, this, message,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
我收到错误“没有重载函数的实例boost :: asio :: buffer匹配参数列表boost::shared_ptr<uint8_t[]>
”
m_data填入另一个函数。
我怀疑这是因为我实际上必须在m_data上使用关键字new。但我无法弄明白该怎么做。我尝试过几种不同的变化。有人能在这里给我一些见解吗?这可能更像是如何取消引用共享指针然后任何东西的问题。提前谢谢!
答案 0 :(得分:1)
boost :: asio :: buffer有一个令人印象深刻的构造函数列表,但它们都不需要shared_ptr<[]>
(可能是lib作者的疏忽)。
在你的情况下,你只需要通过调用get来解压缩共享ptr。