Spécificateurs de type élaborés
Un spécificateur de type élaboré est un nom de type précédé par le mot clé class, struct, enum ou union.
class identifier
struct identifier
enum identifier
union identifier
Notes
Un spécificateur de type élaboré est utilisé pour la mise en forme ou pour indiquer un nom de type qui est masqué par la déclaration d'une variable avec le même nom dans la même portée.
L'instruction suivante déclare l'identificateur Window comme nom de classe. Cette syntaxe est utilisée pour la déclaration anticipée des classes. Pour plus d'informations sur les noms de classe, consultez Noms de classe.
class Window;
Si un nom est déclaré avec le mot clé union, il doit également être défini avec le mot clé union. Les noms définis avec le mot clé class peuvent être déclarés avec le mot clé struct (et inversement). Par conséquent, les exemples de code suivants sont valides :
Exemple
// 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()
{
}
Mais les exemples suivants ne sont pas valides :
// 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];
};