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

时间:2009-07-23 20:32:25

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

我有以下代码包含swig:

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

controller有一个私人构造函数。

正确的咒语是什么使这样的抛出异常?

 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());
  }

1 个答案:

答案 0 :(得分:1)

如果您要发布您正在获得的例外情况会有所帮助,但我不相信您尝试做的事情是可能的。在C ++中,您可以通过引用传递指针,因此更改传递给函数的指针变量,但在Java中没有任何等价物。您应该检查生成的包装器,但我的猜测是您的C ++代码被包装为:

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

...显然不会做你想要的,当你尝试getUUID()时会导致NullPointerException。

假设我是对的,最好的解决办法是让myController()只返回一个控制器*。如果你真的需要整数,可以考虑返回一个std :: pair(注意:包装stl的任何部分需要一些细节,请参考documentation)。