2015-02-04 8 views
0

아래 코드는 지정된 끝점에 성공적으로 비동기 메시지를 보냅니다. 나는 std::shared_ptr<std::string>보다는 boost::shared_ptr<std::string>message의 유형을 변경하는 경우boost :: shared_ptr 대신 std :: 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(); 

그러나, 다음 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 기능을하지, std::shared_ptrboost::shared_ptr 수신 boost::shared_ptrstd::shared_ptr에서 작도 아니라고

+1

'MyClass :: handler'의 프로토 타입은 무엇입니까? – piwi

답변

5

는 같습니다.

+0

와우, 빠른 응답에 감사드립니다. 그거였다. – ksl