在Boost.Python中,dispatch函数和forwarding函数是什么意思?

在Boost.Python中,dispatch函数和forwarding函数是什么意思?,python,c++,boost,virtual,overriding,Python,C++,Boost,Virtual,Overriding,在覆盖类成员函数并围绕基类创建包装器的同时,有人能帮助我理解Boost Python中的分派函数和转发函数的含义吗 有关相同的示例,请访问: 下面是一个无需转发功能即可正常工作的示例: class Base { public: virtual void xfoo(int i) { cout << "XFOO::BASE" << i; } Base(){} Base(const Base&)

在覆盖类成员函数并围绕基类创建包装器的同时,有人能帮助我理解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");
}
类基
{
公众:
虚拟void xfoo(inti)
{
cout调度函数是一种实现,它“切换”派生类类型,以确定虚拟函数的哪个实现应该执行。与纯虚拟函数一样,“转发函数”似乎是指虚拟函数的默认(基类)实现


我也觉得这个术语有点让人困惑。但它只在Boost文档中使用,而且我认为它在总体方案中并不重要。尽量不要挂断它。

故意使用“分派功能”切换到虚拟函数的适当实现,为什么它不能选择它自己的基类默认实现,因此为什么需要forwading函数。我已经用没有“转发函数”的示例代码进行了测试使用继承hirearchy并将其公开给python。它工作得很好。我仍然不清楚是否需要“转发函数”,可能是在没有基类实现的情况下(即,它是纯虚拟的)?我不是100%确定。我在基础中有虚拟函数,有默认实现。它在驱动类中被重写。同一个hirearchy在python中公开。