我有以下代码包含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());
}
答案 0 :(得分:1)
如果您要发布您正在获得的例外情况会有所帮助,但我不相信您尝试做的事情是可能的。在C ++中,您可以通过引用传递指针,因此更改传递给函数的指针变量,但在Java中没有任何等价物。您应该检查生成的包装器,但我的猜测是您的C ++代码被包装为:
int myController(controller _controller) {
_controller = my_controller;
return 0;
}
...显然不会做你想要的,当你尝试getUUID()时会导致NullPointerException。
假设我是对的,最好的解决办法是让myController()只返回一个控制器*。如果你真的需要整数,可以考虑返回一个std :: pair(注意:包装stl的任何部分需要一些细节,请参考documentation)。