1

我有以下由 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());
  }
4

1 回答 1

1

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

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

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

假设我是对的,最好的解决方法是让 myController() 返回一个控制器*。如果您确实需要整数,请考虑返回 std::pair (注意:包装 stl 的任何部分都需要一些精致,请参阅文档)。

于 2009-07-25T13:41:15.670 回答