Compartilhar via


Especificadores de tipo elaborated

Um especificador de tipo elaborated é precedido por um nome de tipo de class, struct, enum, ou union palavra-chave.

class identifier
struct identifier
enum identifier
union identifier

Comentários

Um especificador de tipo elaborated é usado para dar ênfase ou para revelar um nome de tipo está oculta pela declaração de uma variável com o mesmo nome no mesmo escopo.

A instrução a seguir declara o Window identificador como um nome de classe.Essa sintaxe é usada para encaminhar declaração de classes.Para obter mais informações sobre nomes de classe, consulte Nomes de classe.

class Window;

Se um nome for declarado usando a união palavra-chave, ele também deve ser definido usando o união palavra-chave.Nomes que são definidos usando o classe palavra-chave pode ser declarada usando o struct palavra-chave (e vice-versa).Portanto, os exemplos de código a seguir são legais:

Exemplo

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

No entanto, os exemplos a seguir, são ilegais:

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

Consulte também

Referência

Especificadores de tipo C++