gpt4 book ai didi

python - 在 swig 接口(interface)中取消引用 boost::shared_ptr 的好方法

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:41 24 4
gpt4 key购买 nike

是否有一种好的、自动化的方法允许我将 shared_ptr 传递到期望在 SWIG 接口(interface)中引用的函数?

我有一个库,提供如下功能:

// Module message
typedef boost::shared_ptr< Item > ItemPtr;
class Message{
public:
ItemPtr getItem( int index) ...
...
};

然后是另一个使用它们的库:

// Module client
class Client{
public:
void processItem( const Item& item );
}

这些在单独的模块中。

显然,我想做这样的事情:

>>> item=message.getItem(4)
>>> client.processItem( item )

在 python 中,但是类型不一致,item 是一个 shared_ptr 而该函数需要一个引用。

目前我的解决方案是覆盖接口(interface)文件中的函数

%extend client {
void processItem( ItemPtr ptr){
$self->processItem( *ptr);
}
}

有没有一种方法可以避免重复所有需要引用的接口(interface)函数,但我有 shared_ptr 的地方?

最佳答案

只需从您的getItem(int index) 函数返回一个Item 实例。 Ohterwise 你必须重载函数才能接收两种参数类型(shared_ptrItem 引用)

关于python - 在 swig 接口(interface)中取消引用 boost::shared_ptr 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543927/

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