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

FreeBASIC TypeAlias

目次→言語リファレンス→変数とデータ型→ユーザ定義型Type (Alias)←オリジナル・サイト

Type (別名) 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい


型の、代替名を宣言します。

構文:
Type typename as symbol

パラメタ:
typename
新しい代替の名前
symbol
typename と関連づける、シンボルかデータ型宣言。

記述:
symbol は、内蔵のデータ型、SubFunction ポインタ、Type 宣言、Union 宣言、または、Enum 宣言を含む、あらゆる宣言のデータ型を示すことができます。

型別名を使うと、手続き宣言の中でパラメータを前方に宣言することができますが、ポインタ(その渡し方がどうであれ)しか使用できません。また、パラメータ(配列を除く)を参照によって渡されたり返されたりで使えるだけです。
一般に、このような手続きの本体は、実際の型が十分に定義された後で、コードの中でさらに実装する必要があります(例えば、このような参照を渡したり、または渡されたポインタがその後何らかの形で逆参照される場合などです)。
型の別名は、ユーザー定義型 のデータ項目の前方宣言を可能にするために使えますが、ポインターで使うことができるだけです。

関数ポインターへのポインターの宣言を許可するには、型の別名を使う必要があります。そうしないと、ptr は関数ではなく戻り値の型に適用されます。

Type Alias 宣言は、TypeUnion の UDT 構造宣言内にネストすることもできます。

例:
Type ParentFwd As Parent
Type Child
    Name As ZString * 32
    ParentRef As ParentFwd Ptr
    ''...
End Type

Type Parent
    Name As ZString * 32
    ChildList(0 To 9) As Child
    ''...
End Type

Dim p As Parent
p.Name = "父"
With p.ChildList (0)
    .Name = "子"
    .ParentRef = @p
    '' ...
End With   

With p.ChildList (0)
    Print .Name; " is child of "; .parentRef->Name
End With

Sleep



Function triple (ByVal i As Integer) As Integer
    Return 3 * i
End Function

Type As Function (ByVal As Integer) As Integer function_alias

'Dim As Function (Byval As Integer) As Integer f  ''この構文は機能しますが、次のコード行より読みにくいです
Dim As function_alias f
f = @triple
Print f(123)
Sleep

'Dim As Function (Byval As Integer) As Integer Ptr pf  ''この構文は機能しません。なぜなら、Ptr は Integer に適用され、関数には適用されないからです。
Dim As function_alias Ptr pf                           ''この構文は機能します
pf = @f
Print (*pf)(123)  ''手続きポインタへ逆参照されたポインタは、括弧で囲まなければなりません
Sleep



バージョン:
QBからの違い:
参照:
ユーザ定義型 に戻る

←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2022-11-17 14:04:03
日本語翻訳:WATANABE Makoto、原文著作者:JeffMarshall

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

表示-非営利-継承