我正在尝试使用多个构造函数方法定义一个类,其中一些方法采用关键字参数。一切都按预期/预期工作,直到构造函数传递一个错误的参数列表,在这种情况下解释器死亡而不是抛出异常。这是一个最小的例子:
#include <boost/python.hpp>
#include <string>
class Crash {
public:
Crash(std::string) { }
Crash(int, int) { }
};
BOOST_PYTHON_MODULE(mymodule) {
using namespace boost::python;
class_<Crash>("Crash", init<std::string>())
.def(init<int, int>((arg("i") = 3)))
;
}
输出:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule as mm
>>> mm.Crash("asdf")
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(3)
<mymodule.Crash object at 0x00D9FE10>
>>> mm.Crash(4, i=5)
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(i=3) # kills the interpreter
使用无效关键字(例如Crash(blah=4)
)也会导致解释程序失效。
这是一个Boost.Python错误,还是我做错了什么?
我正在使用Boost 1.51 / Python 2.7.3 / MSVC 9.0。