纯虚函数作为boost asio绑定函数参数

时间:2019-02-17 08:32:18

标签: boost boost-asio

是否可以将纯虚函数用作asio绑定参数?
在使用boost asio的基类中定义了一个公共成员函数。
实现将在其自己的上下文中完成,因此必须结合使用boost::asio::io_service.post()bind()。我的问题是在此步骤中提出的,是否可以使用纯虚函数作为绑定函数的参数。

class Base
{
  ....
  void Reset()
  {
      // Direct calling a pour virtual function.
      ios_.post(std::bind(&Base::Reset_, this));
  }
protected:
  virtual void Reset_() = 0;
  boost::asio::io_service& ios_;
};

class Derived : public Base
{
  ....
protected:
  virtual void Reset_()
  {
      // reset implemented ...
  }
};

还是应该有这样的解决方法?

class Base
{
  ....
  void Reset()
  {
      // Indirect calling a pour virtual function.
      ios_.post(std::bind(&Base::Reset_, this));
  }
protected:
  void Reset_()
  {
      HandleReset();
  }
  virtual void HandleReset() = 0;
  boost::asio::io_service& ios_;
};

class Derived : public Base
{
  ....
protected:
  virtual void HandleReset()
  {
      // Reset implemented ...
  }
};

0 个答案:

没有答案