20.8.2 可変長構造体

可変長のメンバを持つ構造体か,または固定長のメンバを持つ構造体かによって,C++で生成するコードが異なります。コードサンプル20-21に示したexample構造体を可変長にした例を,コードサンプル20-24~20-25に示します。ここでは,可変長構造体に変換するため,longメンバがstringと入れ替えられ,オブジェクトリファレンスが追加されています。

コードサンプル20-24 IDL内の可変長構造体定義

// IDL
interface ABC {
   ...
};
struct vexample {
   short a;
   ABC c;
   string name;
};

コードサンプル20-25 可変長構造体のC++へのマッピング

// C++
struct vexample {
   CORBA::Short a;
   ABC_var c;
   CORBA::String_var name;
   vexample& operator=(const vexample& s);
};

class vexample_var {
   ...
};

ABCオブジェクトがABC_varクラスにマッピングされています。同様に,nameというstringがCORBA::String_varクラスにマッピングされます。また,可変長構造体の代入演算子も生成されます。

<この項の構成>
(1) 可変長構造体でのメモリ管理

(1) 可変長構造体でのメモリ管理

可変長構造体で_varクラスを使用すると,可変長メンバに対応するメモリが透過的に管理されます。