gpt4 book ai didi

javaout 类型映射不适用于 std::vector

转载 作者:行者123 更新时间:2023-11-28 05:57:14 25 4
gpt4 key购买 nike

当我使用 int 时一切正常 -

%immutable S::field;

%typemap(javaout) int S::field {
//custom code
}

struct S {
int field;
};

但方法不适用于 std::vector<int>

%include <std_vector.i>

%immutable S::field;
%template(vector_int) std::vector<int>;

%typemap(javaout) std::vector<int> S::field {
//custom code
}

struct S {
std::vector<int> field;
};

样本是用 swig -java -c++ -module sample sample.i 编译的

最佳答案

请参阅 structure data members 上的 Swig 文档.

重点是:

When a structure member is wrapped, it is handled as a pointer, unless the %naturalvar directive is used where it is handled more like a C++ reference.

所以你需要定义的typemap是

%typemap(javaout) std::vector<int>* S::field {
//custom code
}

(或 %typemap(javaout) std::vector<int>& S::field 如果您使用 %naturalvar )。

关于javaout 类型映射不适用于 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33917546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com