typeid (Extensões de Componentes C++)

Obtém um valor que indica o tipo de um objeto.

Todos os tempos de execução

kwd9abya.collapse_all(pt-br,VS.110).gifSintaxe

T::typeid

kwd9abya.collapse_all(pt-br,VS.110).gifParâmetros

  • T
    Um nome de tipo.

Tempo de execução do windows

kwd9abya.collapse_all(pt-br,VS.110).gifSintaxe

Platform::Type^ type = T::typeid;

kwd9abya.collapse_all(pt-br,VS.110).gifParâmetros

  • T
    Um nome de tipo.

kwd9abya.collapse_all(pt-br,VS.110).gifComentários

No C++/CX, o typeid retorna um Platform::Type que é construído a partir de informações de tipo em tempo de execução.

kwd9abya.collapse_all(pt-br,VS.110).gifRequisitos

Opção do compilador: /ZW

Common Language Runtime

Sintaxe

type::typeid

Parâmetros

  • tipo
    O nome de um tipo abstrato (declarador abstrato) para o qual você deseja o objeto System::Type.

Comentários

para obtertypeid é usado para obter Type para um tipo em tempo de compilação.

typeid é semelhante a obter System::Type para um tipo em tempo de execução usando GetType ou GetType.No entanto, typeid aceita somente um nome de tipo como parâmetro.Se quiser usar uma instância de um tipo para obter o nome de System::Type, use GetType.

typeid deve poder avaliar um nome de tipo (tipo) em tempo de compilação, enquanto GetType avalia o tipo a ser retornado em tempo de execução.

typeid pode ter um nome de tipo nativo ou um alias de common language runtime para o nome de tipo nativo, consulte .NET Framework equivalentes para tipos C++ nativo (C + + / CLI) para mais informações.

typeid também funciona com tipos nativos, embora ainda retorne um System::Type.Para obter uma estrutura type_info, use Operador typeID.

typeid é o sucessor a __typeof na sintaxe de /clr anterior.

kwd9abya.collapse_all(pt-br,VS.110).gifRequisitos

Opção do compilador: /clr

kwd9abya.collapse_all(pt-br,VS.110).gifExemplos

Exemplo

O exemplo a seguir compara a palavra-chave typeid ao membro GetType().

// keyword__typeid.cpp
// compile with: /clr
using namespace System;

ref struct G {
   int i;
};

int main() {
   G ^ pG = gcnew G;
   Type ^ pType = pG->GetType();
   Type ^ pType2 = G::typeid;

   if (pType == pType2)
      Console::WriteLine("typeid and GetType returned the same System::Type");
   Console::WriteLine(G::typeid);

   typedef float* FloatPtr;
   Console::WriteLine(FloatPtr::typeid);
}

Saída

  
  

Exemplo

O exemplo a seguir mostra que uma variável do tipo System::Type pode ser usada para obter os atributos em um tipo.Também mostra que, para alguns tipos, você precisará criar um typedef para usar typeid.

// keyword__typeid_2.cpp
// compile with: /clr
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;

typedef int ^ handle_to_int;
typedef int * pointer_to_int;

public ref class MyClass {};

class MyClass2 {};

[attribute(AttributeTargets::All)]
ref class AtClass {
public:
   AtClass(Type ^) {
      Console::WriteLine("in AtClass Type ^ constructor");
   }
};

[attribute(AttributeTargets::All)]
ref class AtClass2 {
public:
   AtClass2() {
      Console::WriteLine("in AtClass2 constructor");
   }
};

// Apply the AtClass and AtClass2 attributes to class B
[AtClass(MyClass::typeid), AtClass2]   
[AttributeUsage(AttributeTargets::All)]
ref class B : Attribute {};

int main() {
   Type ^ MyType = B::typeid;

   Console::WriteLine(MyType->IsClass);
   
   array<Object^>^ MyArray = MyType -> GetCustomAttributes(true);
   for (int i = 0 ; i < MyArray->Length ; i++ )
      Console::WriteLine(MyArray[i]);

   if (int::typeid != pointer_to_int::typeid)
      Console::WriteLine("int::typeid != pointer_to_int::typeid, as expected");

   if (int::typeid == handle_to_int::typeid)
      Console::WriteLine("int::typeid == handle_to_int::typeid, as expected");
}

Saída

  
  
  
  
  
  
  
  

Consulte também

Conceitos

Extensões de componente para plataformas de tempo de execução