swigjavac++;传递包含c++;结构

swigjavac++;传递包含c++;结构,java,c++,stl,vector,swig,Java,C++,Stl,Vector,Swig,我一直在看相关的问题,我无法摆脱swig指针 基本上我有一个简单的结构 typedef struct mbuf{ int date int time } 在我的课堂上,我定义了一个向量的向量 class Profile { private: std::vector<std::vector<mbuf> > mbufArray; std::vector<std::vector<mbuf> > getMbufArray() c

我一直在看相关的问题,我无法摆脱swig指针

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

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;
    }

}
类配置文件{
私人:
std::向量射线;
std::vector getMbufArray()常量{
返波;
}
void setMbufArray(标准::向量mbufArray){
此->mbufArray=mbufArray;
}
}
get和set函数已经为我自动生成。 我已经使用其他问题的信息生成了swigjava类

%{
  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 ); 
}
%{
定义SWIG_JAVA_EXTRA_NATIVE_容器
%}
%包括“标准向量i”
%{ 
包括
%} 
%模板(ProfileVector)std::vector;
%typemap(out)std::vector::value_type{
$result=SWIG_NewPointerObj(SWIG_as_voidptr(&$1),$descriptor(std::vector),0 | 0);
} 
%typemap(out)std::vector::value\u type&{
$result=SWIG_NewPointerObj(SWIG_as_voidptr($1),$descriptor(std::vector),0 | 0);
}
我的问题是,对于我的set和get类型,我仍然收到SWIGTYPE_p_std__vecort_mbuf_,我可以创建函数来提供元素,但我真正需要的是更自然地访问java中的向量元素


任何帮助都将不胜感激。

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

现在,通过将该行添加到.I文件中,我可以访问mbuf类型

%template(ProfileVector) std::vector<mbuf>;
%template(VectorProfileVector) std::vector<std::vector<mbuf> >;
%模板(ProfileVector)std::vector;
%模板(VectorProfileVector)std::vector;

如果你想从java中自然地访问向量或向量,我建议你自己用C++或java编写或者更详细的写代码。就我个人而言,我会用Java编写整个程序。