java - SWIG:使用 %typemap(javabase) 并在 Java 中调用父类(super class)构造函数

标签 java c++ swig

在 C++ 中

class A{
..
..
}

class B{
..
..
}

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

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

"implicit super constructor B() is undefined."

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

我可以使用 swig 类型映射为 A 生成调用 super 构造函数的构造函数吗?

最佳答案

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

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

解决了问题

关于java - SWIG:使用 %typemap(javabase) 并在 Java 中调用父类(super class)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34020566/

相关文章:

java - spring-boot 应用程序的外部配置

java - AppEngine TaskQueue 将 byte[] 数组编码为字符串时使用的编码是什么?

java - 我们如何在 Spring Boot 中使用 @RequestBody 传递一个列表和一个单独的字符串

c++ - 尝试使用 C 中的套接字从 http 网站检索 html 时连接被拒绝

python - 用数组成员包装 C 结构以便在 python : SWIG? cython 中访问?类型?

java - 如何从 SWIG 中的 C 指针生成 Java 数组

java - Docker 中的 gradle 构建速度缓慢。缓存 gradle 构建

c++ - boost::threads 执行顺序

c++ - std::pmr::set_default_resource在多线程程序中不可用吗?

c++ - 排除 ifdef 代码块的接口(interface)生成