struct A {
virtual void foo();
virtual void bar();
virtual void baz();
};
struct B : public A {
virtual void quux();
};
struct C : public A {
virtual void foobar();
};
我想包装所有的类A、B和C,以便它们可以从Python扩展。实现这一目标的一般方法是:
struct A_Wrapper : public A, boost::python::wrapper<A> {
//dispatch logic for virtual functions
};
struct B_Wrapper : public B, public A_Wrapper, public boost::python::wrapper<B> {
//dispatch logic specific for B
};
struct C_Wrapper : public C, public A_Wrapper, public boost::python::wrapper<C> {
//dispatch logic specific for C
}
然而,这似乎会带来各种各样的麻烦:boost包装器基的双重继承和B_包装器和C_包装器对象中的A的双重继承。有没有一种常见的方法来解决这个实例,而我却不知道?