SWIG:使用%typemap(javabase)并在java中调用超类构造函数

时间:2015-12-01 12:34:10

标签: java c++ swig

在C ++中

class A{
..
..
}

class B{
..
..
}

现在在java中我能够生成A.java,B.java类。现在我想在Java A中扩展B.所以我用%typemap(javabase)A“B”。我可以看到A在A.java中扩展了B

现在我在B类中没有默认构造函数。所以在生成的A.java中我收到错误

  

“隐式超级构造函数B()未定义。”

如果我手动将super添加到生成的A构造函数中,一切都会正常工作。但我不想编辑A.java。

使用swig类型映射可以为A生成构造函数,它将调用超级构造函数吗?

1 个答案:

答案 0 :(得分:1)

    %typemap(javabody) A %{
      private long swigCPtr;
      protected boolean swigCMemOwn;

      protected $javaclassname(long cPtr, boolean cMemoryOwn) {
      super(cPtr,cMemoryOwn);
        swigCMemOwn = cMemoryOwn;
        swigCPtr = cPtr;
      }
     %}

解决了问题