クラス名のスコープ
クラス:インデックス への移動
クラス名のスコープはローカルです。クラス名が同じスコープに複数回現れる場合には、なんらかの特殊な要件が必要となります。クラス名のスコープは、宣言の時点から始まり、ブロックの最後で終了します。クラス名は、その囲われたスコープ内において、同じ名前を持つクラス、オブジェクト、列挙型、関数を隠ぺいします。あるクラス名が、同じ名前のオブジェクト、関数、または列挙型があるスコープで宣言された場合、そのクラスは、より詳細な型指定子を使用してのみ、参照することができます。つまり、クラス キー class、struct、union は、クラス名と共に使用されなければなりません。たとえば、
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 クラスの前方宣言の構文も参照してください。