来自其他班级的asio计时器

时间:2016-01-10 20:56:20

标签: c++ boost timer boost-asio

我试试这个:timer tuto。 但是空白印刷品是另一类。当我在main中调用函数时:

t.async_wait(&class::print);

我有这个错误:

  

error : must use '.*' or '->*' to call pointer-to-member function in 'boost::asio::detail::lvref<void (class::*)(const boost::system::error_code&)>() (...)', e.g. '(... ->* boost::asio::detail::lvref<void (class::*)(const boost::system::error_code&)>())

我不知道如何解决这个问题:s

  

您必须绑定对象实例,例如:t.async_wait(boost :: bind(&amp; Class :: print,this,_1));或者,如果实例不是这个,请使用指向类的另一个(智能)指针。您可以使用引用,但这需要引用包装器来阻止绑定复制绑定参数:Class c;   // ...   t.async_wait(boost :: bind(&amp; Class :: print,boost :: ref(c),_ 1));

我已经尝试过,但我有一个错误:

error : 'void (class::*)(const boost::system::error_code&)' is not a class, struct, or union type typedef typename F::result_type type;
  

您需要处理print方法所需的参数。   像这样的东西:   t-&gt; async_wait(boost :: bind(&amp; Class :: print,this,         提高:: ASIO ::占位符::错误));   请查看本教程http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/tutorial/tuttimer3.html

我尝试但是我有一个我不明白的错误

error : pointer to member type 'void (class::)(const boost::system::error_code&)' incompatible with object type 'windows'
     BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
                                        ^

2 个答案:

答案 0 :(得分:0)

您必须绑定对象实例,例如:

initPBJVision

或者如果实例不是t.async_wait(boost::bind(&Class::print, this, _1)); ,请使用指向this的另一个(智能)指针。你可以使用引用,但这需要一个引用包装器来阻止bind复制绑定参数:

Class

答案 1 :(得分:0)

您需要处理print方法所需的参数。

这样的事情:

t->async_wait(boost::bind(&Class::print, this,
      boost::asio::placeholders::error));

查看本教程http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/tutorial/tuttimer3.html