C++ 使用SWIG[C+;+;to Java]处理对指针/双指针的引用
我的代码有一个像C++ 使用SWIG[C+;+;to Java]处理对指针/双指针的引用,c++,pointers,reference,swig,C++,Pointers,Reference,Swig,我的代码有一个像 类IExample{~IExample();//纯虚拟方法…} 继承接口的类,如 class-CExample:public-IExample{protected:CExample();//纯虚拟方法的实现…} 和一个全局函数来创建该类的对象- createExample(IExample*&obj){obj=new-CExample();} 现在,我正在尝试使用SWIG获取Java API包装器,SWIG生成的接口有一个类似于IExample(长cPtr,布尔cMemoryO
类IExample{~IExample();//纯虚拟方法…}代码>
继承接口的类,如
class-CExample:public-IExample{protected:CExample();//纯虚拟方法的实现…}代码>
和一个全局函数来创建该类的对象-
createExample(IExample*&obj){obj=new-CExample();}代码>
现在,我正在尝试使用SWIG获取Java API包装器,SWIG生成的接口有一个类似于IExample(长cPtr,布尔cMemoryOwn)的构造函数
,全局函数变为createExample(IExample obj)
问题是当我这样做的时候
iexampleexobject=newiexample(examplelaryjni.new_plong(),true/*或false*/);
createExample(exObject)代码>
<> >代码> CytAdExcess(…)>CtTr(long)变量没有得到更新。理想情况下,此变量应包含CExample
对象的地址
我在文档中读到,类型映射也可以用来处理输出参数和指针引用;然而,我无法找到使用类型映射来解决此问题的合适方法,或者任何其他解决方法
请建议我是否做错了什么,或者在这种情况下如何使用typemap?我不知道如何使用typemaps解决这个问题;Java不支持引用参数,因此转换将非常复杂
为什么不让createExample()
返回一个IExample*
?如果需要其他内容的返回值,我建议返回std::pair
,或类似的结构化类型