首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用boost::signal 2::signal作为处理程序时出错

使用boost::signal 2::signal作为处理程序时出错
EN

Stack Overflow用户
提问于 2011-02-28 22:32:07
回答 2查看 1.2K关注 0票数 0

在以下代码中:

代码语言:javascript
复制
   boost::signals2::signal<void(const boost::system::error_code&)> signal;
   socket.async_connect(endpoint, boost::ref(signal));

(在http://liveworkspace.org/code/e04910cbcc4cfd9e42e34d1af55c393e发现)

我知道这个错误:

文件中包含的

:20,boost/asio/basic_io_object.hpp:20,boost/asio/basic_socket.hpp:19,boost/asio/basic_datagram_socket.hpp:20,boost/asio.hpp:20,boost/asio/basic_Socket.hpp:19,boost/asio/basic_datagram_socket.hpp:20,boost/asio.hpp:20,来自source.cpp:2: boost/asio/detail/bind_handler.hpp:在成员函数'void boost::asio::detail::binder1< boost::reference_wrapper >中,boost::system::error_code ::operator()()':boost/asio/handler_invoke_hook.hpp:64:3:从'void boost::asio::asio_handler_invoke( boost::asio::detail::binder1< boost::reference_wrapper > )实例化boost::system::error_code,)‘boost/asio/detail/handler_invoke_helpers.hpp:39:3:从'void boost_asio_handler_invoke_helpers::invoke( const boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code &,boost::reference_wrapper >& )‘boost/asio/detail/bind_handler.hpp:73:3:实例化从'void::asio ::asio_handler_invoke( const boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code &,boost::asio::detail::binder1< boost::reference_wrapper >,boost/asio/detail/handler_invoke_helpers.hpp:39:3:实例化自'void boost_asio_handler_invoke_helpers::invoke( const boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code &,boost::asio::detail::binder1< boost::reference_wrapper >,boost/asio/detail/completion_handler.hpp:63:7:实例化自静态空洞boost::boost::system::error_code::detail ::completion_handler< boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code

boost::asio::detail::boost::asio::detail::task_io_service *,boost::asio::detail::boost::asio::detail::task_io_service_operation *,boost::system::error_code,‘boost/asio/detail/completion_handler.hpp:38:17:实例化自'boost::asio::detail ::completion_handler< boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code

::completion_handler( boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code )

)从'void::asio::boost/asio/detail/impl/task_io_service.hpp:50:3:::task_io_service::post( boost::asio::detail::binder1< boost::reference_wrapper >,boost::system::error_code‘实例化’

)‘boost/asio/impl/io_service.hpp:80:3:实例化自'void boost::asio::io_service::post(Handler)’boost/asio/basic_socket.hpp:649:9:实例化自'void boost::asio::basic_socket< boost::asio::ip::tcp,boost::asio::stream_socket_service ::async_connect( boost::asio::basic_socket >::boost ::asio::ip::basic_endpoint & )boost::reference_wrapper> )‘source.cpp:10:53:从这里实例化为boost/asio/detail/bind_handler.hpp:40:5:错误:不匹配对'( boost::reference_wrapper> ) (const boost::system::error_code &)’的调用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-01 14:05:53

看来你的签名是错的?您需要为error_code指定一个占位符

试一试

代码语言:javascript
复制
boost::signals2::signal<void(const boost::system::error_code&)> signal;
socket.async_connect(endpoint, boost::bind(boost::ref(signal), _1));
票数 2
EN

Stack Overflow用户

发布于 2011-03-01 23:17:05

Ralf的answer很接近,我认为您需要将占位符绑定到signal函式:

代码语言:javascript
复制
#include <boost/signals2.hpp>
#include <boost/asio.hpp>

using namespace boost::asio;

int 
main() 
{
   io_service ios;
   ip::tcp::socket socket(ios);
   const ip::tcp::endpoint endpoint(
           ip::address::from_string(""), 
           0
           );

   boost::signals2::signal<void(const boost::system::error_code&)> signal;
   socket.async_connect(
           endpoint, 
           boost::bind(
               boost::ref(signal), _1
               ) 
       );
}

示例:

代码语言:javascript
复制
samm@macmini ~$ g++ -I /opt/local/include -L/opt/local/lib -Wl,-rpath,/opt/local/lib -lboost_system signal.cc 
samm@macmini ~$ echo $?
0
samm@macmini ~$ 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5148358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档