厄介な継承の問題を回避しながら、一連のクラスを 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();
};
Python から拡張できるように、すべてのクラス A、B、および C をラップしたいと考えています。これを達成するための通常の方法は、次のようになります。
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
}
ただし、ブースト ラッパー ベースの二重継承と、B_Wrapper および C_Wrapper オブジェクトでの A の二重継承により、あらゆる種類の厄介な問題が発生するようです。私が見逃しているこのインスタンスを解決する一般的な方法はありますか?
ありがとう。