可変長のメンバを持つ構造体か,または固定長のメンバを持つ構造体かによって,C++で生成するコードが異なります。コードサンプル20-21に示したexample構造体を可変長にした例を,コードサンプル20-24~20-25に示します。ここでは,可変長構造体に変換するため,longメンバがstringと入れ替えられ,オブジェクトリファレンスが追加されています。
// IDL
interface ABC {
...
};
struct vexample {
short a;
ABC c;
string name;
};
// 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クラスにマッピングされます。また,可変長構造体の代入演算子も生成されます。
可変長構造体で_varクラスを使用すると,可変長メンバに対応するメモリが透過的に管理されます。