任何人都可以帮助我理解Boost Python中的调度函数和转发函数是什么意思,同时重写类成员函数并创建基类的包装器?
相同的例子可以在以下网址找到:
Virtual Functions with Default Implementations
以下是无需转发功能即可正常工作的示例:
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");
}
答案 0 :(得分:0)
&#34;调度功能&#34;是&#34;切换&#34;在派生类类型上找出虚拟函数的哪个实现应该执行。像纯虚函数一样。 &#34;转发功能&#34;似乎是指虚函数的默认(基类)实现。
我也觉得这个术语有点令人困惑。但它只用于传递Boost文档,而且我认为它在宏观计划中非常重要。尽量不要挂断它。