オブジェクト内構造体

構造体型のクラスを定義して、そのクラスのインスタンス変数を宣言すれば、実装としては、インスタンス変数の中に構造体が埋め込まれることになります。ここでいうものは、そのような自明なことではなくて、別段の構造体型クラスを定義することなく、インスタンス変数の定義として構造体を書き込む方法です。そのクラスのメソッドから呼ばれるシステムコールが引数として構造体を要求しており、そのために別段のクラスを宣言するまでもないようなときに利用できます。

やり方は簡単で、インスタンス変数として構造体型を宣言する"68k_record"の後にその構造体の名前を書いてから"{"を始めればよいだけです。
:CLASS   MyClass   super{ OBJECT }
  VAR  IVAR1
  68k_record  MyRecord
  {
    VAR  member1
    INT  member2
    VAR  member3
  }
  VAR  IVAR2
 .........
メソッドの中では、構造体のメンバ一つ一つにインスタンス変数としてメッセージを送ることができます。また"MyRecord"と書くことによって、member1からmember3で構成された構造体のポインタを得ることができます。

インスタンスへ変数の全体を構造体にして、入れ子にすることもできます。
:CLASS   MyClass2   super{ OBJECT }
  record
  {
    VAR  IVAR1
    INT  IVAR2
    68k_record  MyStruct
    {
     VAR  member1
     VAR  member2
     VAR  member3
    }
    VAR  IVAR3
  }
.......


関連項目:






最終更新:2018年12月22日 19:09