2010-05-19 2 views
0

:함수에 구성원 신호를 바인딩이 코드 라인은 문제없이 제대로 컴파일

socket_->async_connect(connection_->remote_endpoint(), 
         boost::bind(boost::ref(connected_), 
         boost::dynamic_pointer_cast<session<version> >(shared_from_this()), 
         boost::asio::placeholders::error)); 
그러나

boost::bind(boost::ref(connected_), 
      boost::dynamic_pointer_cast<session<version> >(shared_from_this()), 
      boost::asio::placeholders::error); 

부스트 :: 기능 또는이 같은 콜백으로 할당 할 때

incomprehensible errors (링크가 너무 길어서 여기에 적합하지 않기 때문에 링크 됨)이 나타납니다.

한편

나는이 같은 무료 부스트에 신호 :: 기능을 결합 성공 :

void print(const boost::system::error_code& error) 
{ 
    cout << "session connected"; 
} 

int main() 
{ 
boost::signal<void(const boost::system::error_code &)> connected_; 
connected_.connect(boost::bind(&print, boost::asio::placeholders::error)); 

    client<>::connection_t::socket_ptr socket_(new client<>::connection_t::socket_t(conn->service())); // shared_ptr of a tcp socket 

    socket_->async_connect(conn->remote_endpoint(), 
         boost::bind(boost::ref(connected_), 
         boost::asio::placeholders::error)); 
    conn->service().run(); // io_service.run() 
    return 0; 
} 

이 작동하고 올바르게 인쇄 session connected합니다. 여기서 내가 뭘 잘못하고 있니?

답변

0

바인드 troubleshooting guide을 읽었습니까? 컴파일러에 익숙하지 않지만 오류가 두 번째 글 머리 기호 "함수 개체를 지정한 인수를 사용하여 호출 할 수 없습니다."문제 해결 섹션에서 비슷한 것 같습니다.