如果我有这样的c ++函数...
int myfunc(int a, std::vector<float> *b);
而且我的.i文件中有这个文件...
%apply std::vector<float>* OUTPUT {std::vector<float>*};
然后在python中,我可以这样做...
_,bout = mylib.myfunc(1)
和bout
将是我想要的浮点列表。...是的!
但是现在我想用c ++做到这一点...
int myfunc(int a, std::vector<MyObj> *b);
简单地执行以下操作无效...
%apply std::vector<MyObj>* OUTPUT {std::vector<MyObj>*};
它给ma提供了错误的类型或数量的Python错误。通过将其添加到我的.i文件中,我发现了一种不理想的方法...
%include "std_vector.i"
namespace std {
%template(vectormyobj) vector<MyObj>;
}
然后在python中,我可以这样做...
bout = mylib.vectormyobj()
_ = mylib.myfunc(1,bout)
在这种情况下,bout
是我的自定义类型的列表,一切正常。...EXCEPT我真的很想在=的左侧获得bout
,而不必通过它作为争论。似乎我需要一些%typemap(in)和/或%typemap(argout)Swig-fu才能使其正常工作,但我一直无法将其包围。
任何人都可以提供指导吗?
终于我弄清楚了如何使这项工作...