Partager via


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];
};

Voir aussi

Référence

Spécificateurs de type C++