在Boost.Python中,dispatch函数和forwarding函数是什么意思?
在覆盖类成员函数并围绕基类创建包装器的同时,有人能帮助我理解Boost Python中的分派函数和转发函数的含义吗 有关相同的示例,请访问: 下面是一个无需转发功能即可正常工作的示例:在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&)
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中公开。