gpt4 book ai didi

c++ - 在 Boost::Python 中通过引用传递

转载 作者:太空狗 更新时间:2023-10-29 23:10:05 25 4
gpt4 key购买 nike

考虑这样的事情:

struct Parameter
{
int a;
Parameter(){a = 0;}
void setA(int newA){a = newA;}
};
struct MyClass
{
void changeParameter(Parameter &p){ p.setA(-1);}
};

好吧,让我们快进,假设我已经包装了这些类,将所有内容都暴露给 python,还想象我在 C++ 代码中实例化了一个参数对象,我将其传递给 python 脚本,并且 python 脚本使用了一个MyClass对象修改我在C++代码开头创建的Parameter实例。

代码执行后,C++中的Parameter instance是不变的!!!这意味着它是按值(或类似的东西 :S)传递的,而不是按引用传递的。但是我以为我声明它是通过引用传递的...

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

最佳答案

Python 没有引用,所以当您将引用传递给 python boost::python 时,会调用对象的 copy-ctor

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

关于c++ - 在 Boost::Python 中通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2459588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com