2015-12-02 52 views
0

我一直堅持這一段時間了。我嘗試發送以下內容:使用使用boost的socket.async_send_to()

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)); 

我得到的錯誤「沒有重載函數提升的實例:: ASIO ::緩衝區中的參數列表匹配boost::shared_ptr<uint8_t[]>

m_data被填充到另一個函數中。

我懷疑這是因爲我實際上必須在m_data上使用新關鍵字。但我不知道如何去做。我嘗試了幾個不同的變化。有人可以在這裏提供一些見解嗎?這可能更多的是如何取消引用共享指針然後是任何東西的問題。提前致謝!

回答

1

的boost :: ASIO ::緩衝器具有consttructors的令人印象深刻的名單,但他們都沒有采取shared_ptr<[]>(可能是一個監督形式LIB作者)。

在你的情況,你只需要derefence共享ptr,例如,通過調用get它。

+0

感謝您的快速回復!所以我應該調用get在m_data.get()中? –

+0

是啊,去了:) – SergeyA

+0

問題結束怎麼了正在爲我們有我們的數據錯誤的大小。使用async_end_to時,可以給它一個指向數據開頭(m_data.get())的指針,然後指定大小。感謝您的幫助! –