| Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編) |
目次
索引
![]()
|
| 第6章 C++言語の提供クラス | > 6.1 IDL定義を元に生成されるクラス | > 6.1.2 構造データ型のマッピング形態 |
IDL言語で構造体型structを指定した場合、C++言語でもstructでデータを宣言します。

module M1{
interface I1{
struct f_STRUCT {
long ef1;
long ef2;
};
struct v_STRUCT {
long ev1;
string ev2;
};
long OPE1 (
in f_STRUCT para1,
out f_STRUCT para2,
inout f_STRUCT para3,
in v_STRUCT para4,
out v_STRUCT para5,
inout v_STRUCT para6);
};
};class M1
{
public:
class I1 : public virtual TD
{
public:
struct f_STRUCT{
CORBA::Long ef1;
CORBA::Long ef2;
};
class f_STRUCT_var
{
public:
f_STRUCT_var();
f_STRUCT_var( f_STRUCT* );
f_STRUCT_var( const f_STRUCT & );
f_STRUCT_var( const f_STRUCT_var & );
~f_STRUCT_var();
f_STRUCT_var &operator=( f_STRUCT * );
f_STRUCT_var &operator=( const f_STRUCT & );
f_STRUCT_var &operator=( const f_STRUCT_var & );
f_STRUCT *operator->() const;
operator f_STRUCT*() const;
protected:
f_STRUCT *_ptr;
};
struct v_STRUCT{
CORBA::Long ev1;
TD::String_var ev2;
};
class v_STRUCT_var
{
public:
v_STRUCT_var();
v_STRUCT_var( v_STRUCT* );
v_STRUCT_var( const v_STRUCT & );
v_STRUCT_var( const v_STRUCT_var & );
~v_STRUCT_var();
v_STRUCT_var &operator=( v_STRUCT * );
v_STRUCT_var &operator=( const v_STRUCT & );
v_STRUCT_var &operator=( const v_STRUCT_var & );
v_STRUCT *operator->() const;
operator v_STRUCT*() const;
protected:
v_STRUCT *_ptr;
};
・・・
};
・・・
};
構造体を宣言すると、上記のように“構造体名_var”クラスが生成されます。
(使用例) // STRUCT_var型のインスタンス宣言 M1::I1::f_STRUCT_var fstr_v; M1::I1::v_STRUCT_var *vstr_v = new M1::I1::v_STRUCT_var; // いずれも暗黙のうちにデフォルトコンストラクタが呼ばれる
(使用例) M1::I1::f_STRUCT_var *fstr_v1 = new M1::I1::f_STRUCT_var; // fstr_v1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2(fstr_v1); // T*コンストラクタ
(使用例) M1::I1::f_STRUCT fstr_v1; // fstr_v1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2(fstr_v1); // コピーコンストラクタ
(使用例) M1::I1::f_STRUCT_var fstr_v1; // fstr_v1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2(fstr_v1); // コピーコンストラクタ
(使用例) M1::I1::f_STRUCT *fstr_1 = new M1::I1::f_STRUCT; // fstr_1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2; fstr_v2 = fstr_1; // T*代入演算子
(使用例) const M1::I1::f_STRUCT *fstr_1 = new M1::I1::f_STRUCT; // fstr_1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2 = fstr_1; // 代入演算子
(使用例) M1::I1::f_STRUCT *fstr_1 = new M1::I1::f_STRUCT; // fstr_1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2; fstr_v2 = fstr_1; M1::I1::f_STRUCT_var fstr_v3 = fstr_v2; // 代入演算子
(使用例) M1::I1::f_STRUCT *fstr_1 = new M1::I1::f_STRUCT; // fstr_1を使用した処理 ・・・ M1::I1::f_STRUCT_var fstr_v2; fstr_v2 = fstr_1; M1::I1::f_STRUCT_var *fstr_v3 = (M1::I1::f_STRUCT*)fstr_v2; // 交換演算子
(使用例) M1::I1::f_STRUCT *fstr_1 = new M1::I1::f_STRUCT; fstr_1->ef1 = 1; fstr_1->ef2 = 2; M1::I1::f_STRUCT_var fstr_v2; fstr_v2 = fstr_1; fstr_v2->ef1 = 3; fstr_v2->ef2 = 4; // ポインタ演算子
目次
索引
![]()
|