簡體   English   中英

使用std :: shared_ptr而不是boost :: shared_ptr時編譯失敗

[英]Compilation failure when using std::shared_ptr instead of boost::shared_ptr

下面的代碼成功將異步消息發送到給定的端點。

// message is a boost::shared_ptr<std::string>

// open a UDP socket
boost::asio::ip::udp::socket socket(ioService);
socket.open(boost::asio::ip::udp::v4());

// create the remote endpoint
boost::asio::ip::udp::endpoint remoteEndpoint(boost::asio::ip::address_v4::from_string(address), port);

// asynchronously send a datagram to the remote endpoint
socket.async_send_to(boost::asio::buffer(*message),
                     remoteEndpoint,
                     boost::bind(&MyClass::handler,
                                 this,
                                 message,
                                 boost::asio::placeholders::error,
                                 boost::asio::placeholders::bytes_transferred));

socket.close();

但是,如果我將message的類型更改為std::shared_ptr<std::string>而不是boost::shared_ptr<std::string>則對async_send_to的調用不會編譯。

錯誤是:

boost/boost/bind/bind.hpp:457:9: No matching function for call to object of type 'boost::_mfi::mf3<void, MyClass, const boost::shared_ptr<std::__1::basic_string<char> > &, const boost::system::error_code &, unsigned long>'.

有人可以解釋什么地方不對嗎? 可能是因為我在使用boost :: bind嗎?

看起來問題是,您的handler函數收到了boost::shared_ptr ,而不是std::shared_ptr並且boost::shared_ptr無法從std::shared_ptr構造。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM