Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SWIG返回指向用户定义类对象的指针_Java_C++_Pass By Reference_Swig - Fatal编程技术网

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

Java 如何使用SWIG返回指向用户定义类对象的指针,java,c++,pass-by-reference,swig,Java,C++,Pass By Reference,Swig,我用swig包装了以下代码: int cluster::myController(controller*& _controller) { _controller = my_controller; return 0; } 控制器有一个私有构造函数 什么是正确的咒语使这样的东西不会抛出异常 public static void main(String argv[]) { controller c = null; int r = dan_cluster.theC

我用swig包装了以下代码:

int
cluster::myController(controller*& _controller) {
   _controller = my_controller;
   return 0;
}
控制器
有一个私有构造函数

什么是正确的咒语使这样的东西不会抛出异常

 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;
}
…这显然不能满足您的需要,在尝试获取UUID()时会导致NullPointerException


假设我是对的,最好的修复方法是myController()只返回一个controller*。如果你真的需要整数,考虑返回一个STD::对(注意:包裹STL的任何部分都需要一些微妙之处,请参阅)。

如果你要发布你所得到的异常,这将是有帮助的,但是我不相信你要做的是可能的。在C++中,可以通过引用传递指针,因此对传递给函数的指针变量进行更改,但在java中没有等价的。你应该检查生成的包装器,但是我的猜测是你的C++代码被包装成:

int myController(controller _controller) {
   _controller = my_controller;
   return 0;
}
…这显然不能满足您的需要,在尝试获取UUID()时会导致NullPointerException

假设我是对的,最好的修复方法是myController()只返回一个controller*。如果你真的需要这个整数,考虑返回一个STD::对(注意:包裹STL的任何部分需要一些微妙之处,请参阅)。对不起,当然它是一个空指针DREF。我应该说得更清楚些。我需要int,因为在某些情况下(请注意,不是这个方法),我们需要传回失败代码。是的!抱歉,这当然是一个空指针deref。我应该说得更清楚些。我需要int,因为在某些情况下(请注意,不是这个方法),我们需要传回失败代码。是的!