FreeBASIC マニュアルのトップに戻る

FreeBASIC ProPgUDTs

目次→教本→プログラマーのための案内User Defined Types←オリジナル・サイト

ユーザ定義型 (UDT) 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

型をあつらえます。

概要
ユーザ定義型(UDT) は、プログラマが作成できる、特別な種類の 変数 です。
ユーザ定義型(User-Defined Type (UDT))は、ちょうど、配列 のように、他の多くの変数を含む、まさしくコンテナです。しかし、配列と異なって、ユーザ定義型は、異なった変数の型を保持できます(配列は、いつも同じ型の変数を保持します)。
事実上、ユーザ定義型は、ユーザ定義型の中に、手続き を持つことさえできます!

メンバー
ユーザ定義型の中に保存された、異なった変数、手続きは、「メンバー」と呼ばれます。あるいは、より広く、項目と呼ばれます。
メンバーは、ほとんどどんな型の変数であることもできます。数字の型、文字列、ポインタenums、そして配列さえ、含んでいます。
変数は、ユーザ定義型の中で、変数がふつうに作成されるのと同様の方法で、作成されます。Dim キーワードが任意である点だけが違います。
ユーザ定義型のメンバーは、. operator を通してアクセスされます。
例えば、ユーザ定義型で someVar と呼ばれる変数を作成するなら、ユーザ定義型変数の名前の後ろに、".someVar" を付けた状態で、それにアクセスします。
下の例を参照下さい。

'myType という名前の UDT を定義します。この型は、someVar という名前の Integer メンバーを持っています
Type myType
  As Integer someVar
End Type

'この型の変数を作成します
Dim myUDT As myType

'メンバー someVar に、23 を設定します。そして、画面に内容を表示します
myUDT.someVar = 23

Print myUDT.someVar
Sleep



Type...End Type は、実際にその型の変数を作成しないで、それは、型がどんな変数を含むか、を定義するだけであることに、注意して下さい。
あなたは、実際に変数を使うために、その型の変数を作成しなければなりません!

UDT ポインタ
UDT ポインタは、名前が示唆するように、ユーザ定義型へのポインタです。
UDT ポインタは、通常のポインタのように作られますが、UDT ポインタを使う、特別な方法があります。
ポインタで示されたユーザ定義型のメンバーにアクセスするために、-> operatorを使用します。
例えば、myUDTPtr がメンバー someVar を持っているユーザ定義型へのポインタであれば、myUDTPtr->someVar として、メンバーに、アクセスします。これは、等しく有効な (*myUDTPtr).someVar に対して、はるかに分かりやすい省略表記です。

Type rect
    x As Integer
    y As Integer
End Type

Dim r As rect
Dim rp As rect Pointer = @r

rp->x = 4
rp->y = 2

Print "x = " & rp->x & ", y = " & rp->y
Sleep



UDT のインスタンス化
UDT のオブジェクトを作成する場合は:
- 非静的データ・メンバーだけが、各オブジェクト・インスタンスに特定のメモリ割り当てを引き起こします。
- 静的データ・メンバは、UDT に対して一度だけ割り当てられるので、すべてのオブジェクト・インスタンスに共通です。
- 手続きメンバも UDT に対して一度だけ定義され、そのコードはオブジェクト・インスタンス毎に複製されません(これは非静的手続きメンバについても同様です)。

そのため、手続きメンバ内で宣言された静的変数は、UDT に対して一度だけ割り当てられます。
したがって、この静的変数は、確かに永続的ですが、コードを実行するすべての UDT インスタンスで共有されます(インスタンス固有の変数ではありません)。


参照:

プログラマーのための案内に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2020-10-05 16:35:42
日本語翻訳:WATANABE Makoto、原文著作者:NoTthecheatr

ホームページのトップに戻る

表示-非営利-継承