10.4.3 オブジェクトリファレンスの複製(C++)

ユーザのクライアントプログラムが_duplicate()メソッドを起動すると,オブジェクトリファレンスのリファレンスカウントが一つずつ増え,同じオブジェクトリファレンスが返されます。クライアントプログラムは_duplicate()メソッドを使用して,オブジェクトリファレンスのリファレンスカウントを増やせるので,リファレンスはデータ構造に格納されるか,またはパラメタとして渡されます。リファレンスカウントが増えると,オブジェクトリファレンスに対応するメモリはリファレンスカウントがゼロになるまで解放されません。

IDLコンパイラは,指定の各オブジェクトインタフェースに対して_duplicate()メソッドを生成します。_duplicate()メソッドは,汎用Object_ptrを受け付けて返します。

コードサンプル10-9 オブジェクトリファレンスを二重化するメソッド

class Object {
  . . .
  static CORBA::Object_ptr _duplicate(CORBA::Object_ptr obj);
  . . .
};

POAやORBのオブジェクトは,リファレンスカウントをサポートしていないため,_duplicate()メソッドを使用しても無効です。