Boost.Pythonを使用して次のクラスを公開するにはどうすればよいですか?それはPythonで例外(SystemError: initialization of libdistributions raised unreported exception
)を発生させ、Boost.Python静的メソッドのオーバーロード
bp::class_<C>("C")
.def("F", (void (C::*)(int))&C::F).staticmethod("F")
.def("F", (void (C::*)(double))&C::F).staticmethod("F")
;
しかし:
class C {
public:
static void F(int) {}
static void F(double) {}
};
私はこのような何かを試してみました。
bp::class_
から過負荷の1つを削除すると、すべて正常に動作します。私はBoost.Pythonが自動的にオーバーロードされたコンストラクタを処理できることを知っているので、静的メソッドのようなものがあるかどうか疑問に思っていました。
回答
bp::class_<C>("C")
.def("F", (void (C::*)(int))&C::F) // Note missing staticmethod call!
.def("F", (void (C::*)(double))&C::F).staticmethod("F")
;
提起されている例外を投稿してください。 –
@ChristianJonassen:編集されました。 –