我一直在寻找相关问题,但我无法摆脱痛饮指针。
基本上我有一个简单的结构
typedef struct mbuf{
int date
int time
}
在我的班级中,我定义了一个向量的向量
class Profile {
private:
std::vector<std::vector<mbuf> > mbufArray;
std::vector<std::vector<mbuf> > getMbufArray() const {
return mbufArray;
}
void setMbufArray(std::vector<std::vector<mbuf> > mbufArray) {
this->mbufArray = mbufArray;
}
}
get 和 set 函数已为我自动生成。我已经使用来自其他问题的信息生成了 swig java 类
%{
define SWIG_JAVA_EXTRA_NATIVE_CONTAINERS
%}
%include "std_vector.i"
%{
include <vector>
%}
%template(ProfileVector) std::vector<std::vector<mbuf> >;
%typemap(out) std::vector<std::vector<mbuf> >::value_type {
$result = SWIG_NewPointerObj(SWIG_as_voidptr(&$1), $descriptor(std::vector<mbuf>), 0 | 0 );
}
%typemap(out) std::vector<std::vector<mbuf> >::value_type & {
$result = SWIG_NewPointerObj(SWIG_as_voidptr($1), $descriptor(std::vector<mbuf>), 0 | 0 );
}
我的问题是我仍然收到一个 SWIGTYPE_p_std__vectorT_mbuf_t 用于我的 set 和 get 类型,我可以创建给我元素的函数,但我真正需要的是更自然地访问 java 中的向量元素。
任何帮助将非常感激。