带有可选的boost :: python :: object参数的C ++函数

时间:2018-06-07 02:48:18

标签: python c++ boost

我使用Boost-Python进行C ++绑定,包括函数foo

#include <boost/python.hpp>

namespace bp =  boost::python;

foo(bp::dict x, bp::object y);

其中bp :: dict和bp :: object类型处理传入的Python类型s.t.它们可以传递给底层的C ++代码 - more details here

现在我想用可选参数定义foo。关注this answer to "How to use boost::optional",我有,

// declaration in foo.hpp
void foo(bp::dict x, bp::optional<bp::object> y = boost::none);

// implementation in foo.cpp
void foo(bp::dict x, bp::optional<bp::object> y) { // do stuff }

我有几个问题:

  1. 当我尝试检查参数是否传入时,这种方法(以及该答案中的其他变体)对我来说失败了。也就是说,if (y) { // do stuff with y }无法将boost :: optional类型转换为bool,并且if (y.get()) { // do stuff with y }无法使用b / c没有get方法。
  2. 在那个链接的答案中,为什么函数声明中没有参数变量名?

0 个答案:

没有答案