在Boost :: Python中通过引用传递

时间:2010-03-17 02:37:39

标签: c++ python scripting boost-python

考虑类似的事情:

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 ++代码开头创建的参数I的实例。

执行该代码后,在C ++中参数实例不变!!!这意味着它是通过值(或类似的东西:S)传递的,而不是通过引用传递的。但我以为我宣称它是通过引用传递的......

我似乎无法找到关于通过引用传递的Boost :: Python文档(尽管似乎有足够的文档关于通过引用返回...)。请问有人可以提供一些提示或指针吗?

1 个答案:

答案 0 :(得分:1)

Python没有引用,因此当您传递对象的boost::python调用copy-ctor的引用时。

在这种情况下,您有两种选择:使用指针(或智能指针)替换引用将python传递给您自己的'智能引用'对象/包装器。