Boost.Python中的dispatch函数和forwarding函数是什么意思



在重写类成员函数并围绕基类创建包装器时,有人能帮助我理解Boost Python中的调度函数和转发函数的含义吗?

相同的示例可以在以下位置找到:

具有默认实现的虚拟功能

以下是一个无需转发功能即可正常工作的示例:

class Base
{
    public:
virtual void xfoo(int i)
    {
        cout << "XFOO::BASE" << i;
    }
        Base(){}
        Base(const Base&){}
};
class BaseW : public Base, public wrapper<Base>
{
    public:
    void xfoo(int i)
    {
        if(override f= this->get_override("xfoo"))
        {
            f();
        }
        Base::xfoo(i);
    }
};
class BaseImpl : public Base
{
    public:
    void xfoo(int i)
    {
        cout << "xFoo:Der " << i;
    }
};
BOOST_PYTHON_MODULE(hello)
{
    class_<BaseW, boost::noncopyable >("Base")
        .def("xfoo",&Base::xfoo)
        ;
    class_<BaseImpl, bases<Base> >("BaseImpl");
}

"dispatch函数"是在派生类类型上"切换"以找出应该执行虚拟函数的哪个实现的实现。就像一个纯粹的虚拟函数。"转发函数"似乎指的是虚拟函数的默认(基类(实现。

我也觉得这个术语有点令人困惑。但它只用于传递Boost文档,我认为它在总体方案中并不重要。尽量不要挂断电话。

最新更新