詳細な型指定子
詳細な型指定子とは、class、struct、enum、または union キーワードが前に付いた型名です。
class identifier
struct identifier
enum identifier
union identifier
解説
詳細な型指定子は、強調の目的で、または同じスコープに同じ名前の変数が宣言されていることにより隠されている型名を明示する目的で、使用されます。
次のステートメントは、クラス名として Window 識別子を宣言しています。 この構文は、クラスの事前宣言に使用されます。 クラス名の詳細については、「クラス名」を参照してください。
class Window;
名前が union キーワードを使用して宣言されている場合、その名前は union キーワードを使用して定義する必要があります。 class キーワードを使用して定義された名前は、struct キーワードを使用して宣言できます (逆の場合も同様です)。 したがって、次のコード サンプルは有効です。
使用例
// elaborated_type_specifiers1.cpp
struct A; // Forward declaration of A.
class A // Define A.
{
public:
int i;
};
int main()
{
}
// elaborated_type_specifiers2.cpp
class A; // Forward declaration of A
struct A
{
private:
int i;
};
int main()
{
}
// elaborated_type_specifiers3.cpp
union A; // Forward declaration of A
union A
{
int i;
char ch[2];
};
int main()
{
}
ただし、次の例は無効です。
// elaborated_type_specifiers4.cpp
union A; // Forward declaration of A.
struct A
{ // C2011
int i;
};
// elaborated_type_specifiers5.cpp
union A; // Forward declaration of A.
class A
{ // C2011
public:
int i;
};
// elaborated_type_specifiers6.cpp
struct A; // Forward declaration of A.
union A
{ // C2011
int i;
char ch[2];
};