Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス

[目次][索引][前へ][次へ]

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クラスを使用すると,可変長メンバに対応するメモリが透過的に管理されます。