是否可以将纯虚函数用作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 ...
}
};