使用pybind11

时间:2018-12-18 17:06:25

标签: c++ c++11 pybind11

我有一个c ++函数,例如:

int add(int *i, int j) {
    *i += 3;
    return *i + j;
}

我使用pybind11作为

为它创建了python绑定
PYBIND11_MODULE(example, m) {
    m.doc() = R"pbdoc(add)pbdoc";
    m.def("add", &add, R"pbdoc(Add two numbers)pbdoc");
}

我在python中将其称为:

>>import example
>>a=1
>>example.add(a,2)
>>6 --> This is correct
>>a
>>1 --> This is not what expect

它返回6,这是正确的 但是,当我打印“ a”时,它仍然打印1而不是4。 我该如何修改pybind11定义,以便在python中可见的C ++内部参数值中所做的更改

1 个答案:

答案 0 :(得分:0)

You cannot。您的变量a是对常量整数的引用。

在这种情况下,您必须重新绑定对结果的引用:a = example.add(a, 2)。或者,您可以将整数包装为可以突变的类型。