私は関連する質問を見回してきましたが、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;
}
}
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 をまだ受け取っていることです。要素を提供する関数を作成できますが、本当に必要なのは、Java のベクター要素へのより自然なアクセスです。
どんな助けでも大歓迎です。