是否有一种好的自动方式允许我将shared_ptr
传递给期望在SWIG界面中引用的函数?
我有一个提供以下功能的库:
// 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
,而函数需要引用。
到目前为止,我的解决方案是覆盖接口文件中的函数
%extend client {
void processItem( ItemPtr ptr){
$self->processItem( *ptr);
}
}
有没有一种方法,我可以避免重复所有期望引用的接口函数,但我会shared_ptr
的哪些?
答案 0 :(得分:1)
只需从Item
函数返回getItem(int index)
个实例即可。哦,你必须重载函数才能接收两种参数类型(shared_ptr
和Item
引用)