我有一个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 ++内部参数值中所做的更改
答案 0 :(得分:0)
You cannot。您的变量a
是对常量整数的引用。
在这种情况下,您必须重新绑定对结果的引用:a = example.add(a, 2)
。或者,您可以将整数包装为可以突变的类型。