SWIG不接受指针参数的包装对象 我试图用SWIG来封装一些C++ java代码。我有一个C++类( BitVector >,它可以很好地包装包装。< /P>

SWIG不接受指针参数的包装对象 我试图用SWIG来封装一些C++ java代码。我有一个C++类( BitVector >,它可以很好地包装包装。< /P>,java,c++,pointers,swig,Java,C++,Pointers,Swig,我的问题是,我在另一个类上也有一个方法,它接受const BitVector&ranges类型的参数,但SWIG将该参数包装为SWIGTYPE\u p\u BitVector 我生成了两个不同的SWIG包装文件:一个是BitVector.java,另一个是SWIGTYPE\u p\u BitVector.java。当我从Java(实际上是Scala)调用该方法并提供一个BitVector对象时,Scala编译器会抱怨我在需要SWIGTYPE\u p\u BitVector的地方传递了一个BitV

我的问题是,我在另一个类上也有一个方法,它接受
const BitVector&ranges
类型的参数,但SWIG将该参数包装为
SWIGTYPE\u p\u BitVector

我生成了两个不同的SWIG包装文件:一个是
BitVector.java
,另一个是
SWIGTYPE\u p\u BitVector.java
。当我从Java(实际上是Scala)调用该方法并提供一个
BitVector
对象时,Scala编译器会抱怨我在需要
SWIGTYPE\u p\u BitVector
的地方传递了一个
BitVector

SWIG是否应该自动生成代码,以便在需要常量引用或指针时允许我传递包装对象?是否有某种类型的类型映射,我可以构造它来拉出
位向量.swigCPtr
字段


我在Google上能找到的只是关于如何处理指向原语类型的指针的说明。
typemaps中有typemaps。当底层C函数需要一个
int*
并且只打算读取它时,我
允许你传递一个Java
int
,但是我找不到与SWIG生成的包装类型类似的东西。

所以我想我已经解决了这个问题。是的,SWIG应该允许您将一个包装类传递给一个函数,该函数需要一个指向此类类的引用或指针。事实证明,我在这里遇到的问题是名称空间问题

BitVector
实际上被定义为
CSA::BitVector
,并由采用
常量BitVector&
的方法所在的文件使用
'd获取
。这个使用
指令的
没有写入我的SWIG文件,因此SWIG认为
位向量
CSA::位向量
是两种不同的类型,并将它们都包装起来


我通过在.I文件中使用CSA::BitVector
解决了这个问题。它不是从可传递的include中获取的。

简短的回答是肯定的SWIG通常处理得很好,它不应该为const引用版本创建单独的类。.i文件可能有问题,您能否发布.i文件中显示include和bit vector def的部分?如果您尝试过SWIG附带的一些测试文件,最简单的示例将显示这应该可以工作,并且应该可以很好地编译。