考虑类似的事情:
struct Parameter
{
int a;
Parameter(){a = 0;}
void setA(int newA){a = newA;}
};
struct MyClass
{
void changeParameter(Parameter &p){ p.setA(-1);}
};
好吧,让我们快进,假设我已经包装了这些类,将所有内容都暴露给 python,并且还假设我在 C++ 代码中实例化了一个 Parameter 对象,我将其传递给 python 脚本,并且该 python 脚本使用 MyClass 对象修改我在 C++ 代码中一开始创建的 Parameter 实例。
该代码执行后,C++ 中的参数实例不变!!!这意味着它是通过值(或类似的东西:S)而不是通过引用传递的。但我以为我声明它是通过引用传递的......
我似乎找不到关于通过引用传递的 Boost::Python 文档(尽管似乎有足够多的关于通过引用返回的文档......)。任何人都可以给一些提示或指针吗?