クラス名のスコープ

提供: RAD Studio
移動先: 案内検索

クラス:インデックス への移動

クラス名のスコープはローカルです。クラス名が同じスコープに複数回現れる場合には、なんらかの特殊な要件が必要となります。クラス名のスコープは、宣言の時点から始まり、ブロックの最後で終了します。クラス名は、その囲われたスコープ内において、同じ名前を持つクラス、オブジェクト、列挙型、関数を隠ぺいします。あるクラス名が、同じ名前のオブジェクト、関数、または列挙型があるスコープで宣言された場合、そのクラスは、より詳細な型指定子を使用してのみ、参照することができます。つまり、クラス キー classstructunion は、クラス名と共に使用されなければなりません。たとえば、

struct S { /*…*/ };
int S(struct S *Sptr);
void func(void) {
  S t;         // ILLEGAL declaration: no class key and function S in scope
  struct S s;  // OK: elaborated with class key
  S(&s);       // OK: this is a function call
}

C++ ではまた、前方参照宣言も可能です。

class X;  // no members, yet!

前方宣言では、クラスが完全に定義される前に、クラス名 X(通常は、クラス オブジェクトへのポインタへの参照)への特別な参照が許可されています。詳細については、構造体のメンバー宣言を参照してください。もちろん、のクラスのオブジェクトを定義し使用する前に、メンバーを伴う完全なクラス宣言をおこなわなければなりません。

VCL クラスの前方宣言の構文も参照してください。

関連項目