我从我的 C++ 应用程序为 python 做了一些绑定。
问题是我使用指向成员的指针(它用于计算最短路径并给出属性以最小化作为参数)。
这是 C++ 签名:
std::vector<Path> martins(int start, int dest, MultimodalGraph & g, float Edge::*)
这就是我所做的(根据我在文档中的理解):
%constant float Edge::* distance = &Edge::distance;
这就是我从 python 调用我的函数的方式:
foo.martins(0, 1000, g, foo.distance)
这是我得到的错误:
NotImplementedError: Wrong number of arguments for overloaded function 'martins'.
Possible C/C++ prototypes are:
martins(int,int,MultimodalGraph &,float Edge::*)
我有一个使用默认第四个参数的重载方法,它工作得很好。
那么是否可以在 swig 中使用指向成员的指针?如果是,有什么诀窍?如果不是,那么最优雅的工作方式是什么?
感谢您的帮助!
更新:如果有人知道 Boost::python 是否确实做到了,我会切换到它。