如何在SWIG中扩展不属于类的方法?

时间:2015-09-22 22:48:59

标签: python python-2.7 c++11 swig

我有一堆不属于任何类的实用函数,它返回unique_ptr<MyGraph>

我一直在使用%extend指令来处理函数是类的一部分的其他类似情况。但%extend专门用于扩展类。

如何扩展无类实用程序函数以返回原始指针?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可能不需要使用%extend。您可以只创建新方法并直接返回指针。例如,如果您的代码如下所示:

unique_ptr<MyGraph> getMyGraph();

你可以简单地添加一个新方法:

MyGraph* getGraph() { return getMyGraph().get(); }

如果您在使用SWIG时需要控制对此的访问,您可以这样做:

#ifdef SWIG
    MyGraph* getGraph() { return myGraphPtr.get(); }
#else
    unique_ptr<MyGraph> getMyGraph();
#endif  // SWIG

&#39; SWIG&#39;在确定要向目标语言公开的方法时,swig使用define。