我很难看到用 Boost.Python 包装一系列类的最佳方法,同时避免混乱的继承问题。假设我有具有以下结构的 A、B 和 C 类:
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
};
现在对于从 AI 扩展的类 B 和 C 希望能够继承和共享 A 的包装实现。所以我希望能够按照以下方式做一些事情:
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_Wrapper 和 C_Wrapper 对象中 A 的双重继承。有没有一种常见的方法可以解决我缺少的这个实例?
谢谢。