【发布时间】:2021-12-06 13:32:12
【问题描述】:
我们想在 Java 中使用的一些 c++ 代码使用双指针向量,如下所示:
typedef std::vector<double *> VEC_pD;
我认为这样包装就足够了:
%include "typemaps.i"
%include "cpointer.i"
%include "stl.i"
%pointer_class(double, doublep);
%template (VEC_pD) std::vector<double*>;
typedef std::vector<double *> VEC_pD;
虽然 double * 被正确包装到 doublep.java 中,但向量的包装不使用 douplep,而是使用自动生成的类型 SWIGTYPE_p_double。
我正在使用 SWIG 4.0.2。非常感谢任何提示如何告诉矢量模板如何使用 doublep。
【问题讨论】:
-
试试
%template (VEC_pD) std::vector<doublep>;。我最近包装了一个vector<vector<T>>,并在外部定义中使用了vector<T>的包装名称。我对vector<T>的包装名称也是相同的C++typedef;我不知道这是否重要。