2

我一直在寻找相关问题,但我无法摆脱痛饮指针。

基本上我有一个简单的结构

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 中的向量元素。

任何帮助将非常感激。

4

1 回答 1

1

好的,我发现我缺少实际向量的 typedef。

我现在可以通过将行添加到我的 .i 文件来访问 mbuf 类型

%template(ProfileVector) std::vector<mbuf>;
%template(VectorProfileVector) std::vector<std::vector<mbuf> >;
于 2013-01-17T10:04:34.193 回答