提振.Python静态方法重载

Boost.Python static method overloads

本文关键字:重载 静态方法 Python 提振      更新时间:2023-10-16

如何使用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")
;

我想你可以在这里找到解决问题的办法。

http://www.boost.org/doc/libs/1_48_0/libs/python/doc/tutorial/doc/html/python/functions.html python.overloading