Boost.Python将python元组转换为`std :: tuple`或`std :: pair`

时间:2016-03-23 00:16:56

标签: boost-python

我正在尝试使用Boost.Python包装类Cube,其中包含以下形式的签名:

void insert( const std::pair< int, int>& x){ ... do something .. }

如果我按如下方式将此方法包装起来:

.def("append", &Cube::insert, with_custodian_and_ward<1,2>())

我在python中遇到以下错误:

ArgumentError: Python argument types in
    cube.append(cube, list)
 did not match C++ signature:
     append(Cube {lvalue}, std::__1::pair<unsigned long, unsigned long>)
当我输入时

cube.append((1,2))

我不确定如何正确地将python类型转换为c ++类型。我似乎找不到合适的例子。

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是将你的python对象显式转换为c ++ std :: pair:

server.get('/user/google', function(req, res, next) {
  passport.authenticate('google', {
     scope: ['openid email profile']
  } ,function(err, user, info){
    res.send(user);
  })(req,res,next);
})