Partilhar via


Especificadores de tipo elaborados

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

class identifier 
struct identifier 
enum identifier 
union identifier

Comentários

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

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

class Window;

Se um nome é declarado usando a palavra-chave union, ele também deve ser definido usando a palavra-chave union. Os nomes que são definidos usando a palavra-chave class podem ser declarados usando a palavra-chave struct (e vice-versa). Portanto, os exemplos de código a seguir são válidos:

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

Os exemplos a seguir, no entanto, eles 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++