ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

4.6.3 Any_varクラス

  Any_varクラスはAny型データを扱うためのいくつかのメンバ関数を提供します。

  class Any_var {
    public: 
        Any_var();                              // デフォルトコンストラクタ
        Any_var( Any *);                        // Any*コンストラクタ
        Any_var( const Any_var & );             // コピーコンストラクタ
        ~Any_var();                             // デストラクタ

        Any_var  &operator=( Any * );           // Any*代入演算子
        Any_var  &operator=( const Any_var & ); // 代入演算子

        Any       *operator->();                // ポインタ演算子
        operator  Any*()    const;              // 交換演算子

    private: 
        Any       *_ptr; 
  };

Any_varクラスのメンバ

意味

デフォルトコンストラクタ

インスタンス生成時、_ptrを0に初期化します。

Any*コンストラクタ

インスタンス生成時、パラメタで指定されたAnyポインタを_ptrに代入します。

コピーコンストラクタ

インスタンス生成時、指定されたパラメタの_ptrのデータのコピーを作成し、自身の_ptrに設定します。_ptrの領域を新規獲得します。メモリ不足により領域の獲得に失敗した場合、_ptrがNULLに設定されます。

デストラクタ

_ptrの指す領域を解放します。

Any* 代入演算子

右辺で指定されたAny*ポインタを_ptrに代入します。

代入演算子

右辺で指定されたAny_varの_ptrに設定されているデータのコピーを作成し、そのポインタを_ptrに設定します。_ptrの領域を新規獲得します。メモリ不足により領域の獲得に失敗した場合、_ptrがNULLに設定されます。

ポインタ演算子

_ptrに設定されているデータを取り出します。

交換演算子

_ptrに設定されているデータを取り出します。

デフォルトコンストラクタ

  デフォルトコンストラクタは、インスタンス生成時、_ptrに0を設定します。デフォルトコンストラクタの使用例と処理内容を以下に示します。

  CORBA::Any_var any;        // デフォルトコンストラクタが起動されます。

  CORBA::Any_var::CORBA::Any_var()
  {
      _ptr = 0; 
  }
Any*コンストラクタ

  Any*コンストラクタは、インスタンス生成時、パラメタで指定されたAnyポインタを_ptrに代入します。Any*コンストラクタの使用例と処理内容を以下に示します。

  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 
  (*data) <<= x; 

  CORBA::Any_var  any(data);    // Any*コンストラクタが起動されます。

  CORBA::Any_var::Any_var( Any *p ) 
  {
      _ptr = p; 
  }
コピーコンストラクタ

  コピーコンストラクタは、インスタンス生成時、パラメタで指定されたAny_var変数に設定されている_ptrのコピーを作成し、自身の_ptrに代入します。コピーコンストラクタの使用例と処理内容を以下に示します。

  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 
  (*data) <<= x; 

  CORBA::Any_var  any(data);     // Any*コンストラクタが起動されます。

  CORBA::Any_var  any2( any );   // コピーコンストラクタが起動されます。

  CORBA::Any_var::Any_var( const CORBA::Any_var &r ) 
  {
      ...    // rの_ptrを取り出し、そのコピーを_ptrに設定します。
  }
デストラクタ

  デストラクタは、インスタンス解放時、_ptrに設定されている領域を解放します。デストラクタの使用例と処理内容を以下に示します。

  func()
  {
      CORBA::Any *data = new CORBA::Any();
      CORBA::Long x = 3; 
      (*data) <<= x; 

      CORBA::Any_var  any(data);  // Any*コンストラクタが起動されます。
      CORBA::Any_var  *any2 = new Any_var( any ); 

      // コピーコンストラクタが起動されます。

      delete any2;    // デストラクタが起動されます。
  }   // 自動変数anyの解放時にデストラクタが起動されます。

  CORBA::Any_var::~Any_var()
  {
      delete _ptr; 
  }
Any*代入演算子

  Any*代入演算子は、右辺で指定されたAny*ポインタを_ptrに設定します。すでに_ptrにデータが設定されている場合には、解放した後、処理を行います。Any*代入演算子の使用例と処理内容を以下に示します。

  CORBA::Any_var  var_data; 
  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 

  (*data) <<= x; 

  var_data = data; // Any *代入演算子が起動されます。

  CORBA::Any_var::operator=( Any *p ) 
  {
      if( _ptr ) 
          delete _ptr; 
      _ptr = p; 
  }

  CORBA::Any_var::operator=( const Any_var &r ) 
  {
      if( _ptr ) 
          delete _ptr; 
      ...    // rの_ptrを取り出し、そのコピーを_ptrに設定します。
  }
代入演算子

  代入演算子は、右辺で指定されたAny_varのptrに設定されているデータのコピーを作成し自身の_ptrに代入します。すでに_ptrにデータが設定されている場合には、解放した後、処理を行います。代入演算子の使用例と処理内容を以下に示します。

  CORBA::Any_var  var_data; 
  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 

  (*data) <<= x; 

  var_data = data;    // Any *代入演算子が起動されます。

  CORBA::Any_var var_data2 = var_data; 
                     // 代入演算子が起動されます。
ポインタ演算子

  ポインタ演算子は、_ptrに設定されているポインタを返します。ポインタ演算子の使用例と処理内容を以下に示します。

  CORBA::Any_var  var_data; 
  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 

  (*data) <<= x; 
         
  CORBA::Long  *p = var_data->value();
  // ポインタ演算子が起動され、CORBA::Any *データが取り出され、
  // そのCORBA::Any*データに対してvalueメソッドを起動します。

  CORBA::Any_var::operator->()
  {
      return _ptr; 
  }
交換演算子

  交換演算子は、_ptrに設定されているポインタを返します。交換演算子の使用例と処理内容を以下に示します。

  CORBA::Any_var  var_data; 
  CORBA::Any *data = new CORBA::Any();
  CORBA::Long x = 3; 

  (*data) <<= x; 

  CORBA::Any  *p = (CORBA:;Any*)var_data; 
  // 交換演算子が起動され、CORBA::Any *データが取り出されます。

  CORBA::Any_var::operator CORBA::Any*()
  {
      return _ptr; 
  }