2012-01-03 7 views
4

Boost.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_에서 과부하 중 하나를 제거하면 모든 것이 정상적으로 작동합니다. 나는 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 : 편집 됨. –

답변