1

我正在尝试定义一个具有多个构造函数方法的类,其中一些采用关键字参数。一切都按预期/预期工作,直到向构造函数传递了一个错误的参数列表,在这种情况下,解释器死亡而不是抛出异常。这是一个最小的例子:

#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。

4

0 回答 0