使用 pybind11 从 python 中的 c++ 函数的指针参数中读取

read from pointer argument of a c++ function in python with 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

是returns6,这是正确的 但是,当我打印 "a" 时,它仍然打印 1 而不是 4。 我如何修改 pybind11 定义,以便在 C++ 中对参数值所做的更改在 python

中可见

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

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