java - 如何使用 SWIG 返回指向用户定义类对象的指针

标签 java c++ pass-by-reference swig

我用 swig 包装了以下代码:

int
cluster::myController(controller*& _controller) {
   _controller = my_controller;
   return 0;
}

controller 有一个私有(private)构造函数。

让这样的东西抛出异常的正确咒语是什么?

 public static void main(String argv[]) {
    controller c = null;
    int r = dan_cluster.theCluster().myController(c);
    System.out.println(r);
    System.out.println(c.getUUID());
  }

最佳答案

如果您要发布您遇到的异常情况会很有帮助,但我不相信您尝试做的事情是可能的。在 C++ 中,您可以通过引用传递指针,从而对传递给函数的指针变量进行更改,但在 Java 中没有任何等价物。您应该检查生成的包装器,但我的猜测是您的 C++ 代码被包装为如下内容:

int myController(controller _controller) {
   _controller = my_controller;
   return 0;
}

...这显然不会执行您想要的操作,从而在您尝试 getUUID() 时导致 NullPointerException。

假设我是对的,最好的解决方法是让 myController() 只返回一个 Controller *。如果您确实需要整数,请考虑返回一个 std::pair(注意:包装 STL 的任何部分需要一些技巧,请参阅 documentation)。

关于java - 如何使用 SWIG 返回指向用户定义类对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174296/

相关文章:

Java jsr 303从带注释的字段访问bean字段

c++ - VS Express 2012 C++ lambda Intellisense 错误?

c++ - 在 boost::format 中使用 * 宽度和精度说明符

java - 为什么数组赋值不兼容,尽管它们的数据类型是兼容的?

c - 有关 scanf 和内存分配的帮助

java - 在 Mule 中添加自定义 java 组件时出现错误

java - JTable 自定义 header 渲染器看起来像其他带有灵光外观的 header 吗?

java - 从另一个类访问一个类中的列表的最佳方法

java - 单个类是否比 6 个更简单更好?

c++ - 修复不良 while-switch 循环的方法?