2012-01-03 6 views
4

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") 
; 
+0

提起されている例外を投稿してください。 –

+0

@ChristianJonassen:編集されました。 –

答えて

関連する問題