Partager via


Type élaboré spécificateurs

Un spécificateur de type élaboré est un nom de type précédé soit la class, struct, enum, ou union mot-clé.

class identifier
struct identifier
enum identifier
union identifier

Notes

Un spécificateur de type élaboré est utilisé pour mettre en évidence ou pour faire apparaître un nom de type qui est masqué par la déclaration d'une variable portant le même nom dans la même portée.

L'instruction suivante déclare la Window identificateur comme nom de classe.Cette syntaxe est utilisée pour la déclaration anticipée de classes.Pour plus d'informations sur les noms de classe, consultez Les noms de classe.

class Window;

Si un nom est déclaré à l'aide de la union mot clé, il doit également être défini à l'aide de la union mot-clé.Noms qui sont définis à l'aide de la classe mot-clé peut être déclaré à l'aide de la struct mot clé (et vice versa).Par conséquent, les exemples de code suivants sont autorisés :

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()
{
}

Les exemples suivants, toutefois, ne sont pas conformes :

// 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

C++ tapez des spécificateurs