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 に答える