2012-01-03 91 views
4

如何使用Boost.Python公開以下類?Boost.Python靜態方法重載

class C { 
public: 
    static void F(int) {} 
    static void F(double) {} 
}; 

我想是這樣的:

bp::class_<C>("C") 
    .def("F", (void (C::*)(int))&C::F).staticmethod("F") 
    .def("F", (void (C::*)(double))&C::F).staticmethod("F") 
; 

但是,它提出了一個Python異常(SystemError: initialization of libdistributions raised unreported exception)。如果我從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

請郵寄正被拋出的異常。 – 2012-01-03 16:51:08

+0

@ChristianJonassen:編輯。 – 2012-01-03 16:53:30

回答