有谁能帮助我理解在boostpython中重写类成员函数并围绕基类创建包装器时,分派函数和转发函数是什么意思?你知道吗
例如:
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");
}
“dispatch function”是在派生类类型上“切换”以确定虚拟函数的哪个实现应该执行的实现。就像一个纯粹的虚拟函数。“转发函数”似乎是指虚拟函数的默认(基类)实现。你知道吗
我也觉得这个术语有点混乱。但它只用于传递Boost文档,我认为它在总体方案中不太重要。尽量不要被它挂住。你知道吗
相关问题 更多 >
编程相关推荐