Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

typeid (Extensiones de componentes de C++)

Obtiene un valor que indica el tipo de un objeto.

Nota de precaución Precaución

Este tema hace referencia a la versión de extensiones de componentes de C++ de typeid. Para obtener la versión ISO de C++ de esta palabra clave, vea typeid (Operador).

kwd9abya.collapse_all(es-es,VS.120).gifSintaxis

T::typeid

kwd9abya.collapse_all(es-es,VS.120).gifParámetros

T

Nombre de tipo.

kwd9abya.collapse_all(es-es,VS.120).gifSintaxis

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

kwd9abya.collapse_all(es-es,VS.120).gifParámetros

T

Nombre de tipo.

kwd9abya.collapse_all(es-es,VS.120).gifComentarios

En C++/CX, typeid devuelve Platform::Type que se construye a partir de la información de tipo de runtime.

kwd9abya.collapse_all(es-es,VS.120).gifRequisitos

Opción del compilador: /ZW

Sintaxis

type::typeid

Parámetros

type

El nombre de un tipo (declarador abstracto) para el que desea usar el objeto System::Type.

Comentarios

typeid se usa para obtener Type para un tipo en tiempo de compilación.

typeid es similar a obtener System::Type para un tipo en tiempo de ejecución mediante GetType o GetType. Sin embargo, typeid solo acepta un nombre de tipo como parámetro. Si desea usar una instancia de un tipo para obtener su System::Type name, use GetType.

typeid debe poder evaluar un nombre de tipo (type) en tiempo de compilación, mientras que GetType evalúa el tipo que se va a devolver en tiempo de ejecución.

typeid puede tomar un nombre de tipo nativo o un alias nativo de Common Language Runtime para el nombre de tipo nativo; vea Equivalentes de .NET Framework para tipos nativos de C++ (C++/CLI) para obtener más información.

typeid también funciona con los tipos nativos, aunque todavía devuelve System::Type. Para obtener una estructura type_info, use typeid (Operador).

typeid es el sucesor de __typeof en la sintaxis anterior de /clr.

kwd9abya.collapse_all(es-es,VS.120).gifRequisitos

Opción del compilador: /clr

kwd9abya.collapse_all(es-es,VS.120).gifEjemplos

Ejemplo

El ejemplo siguiente compara la palabra clave typeid con el miembro 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);
}

Resultados


typeid and GetType returned the same System::Type
G
System.Single*

Ejemplo

En el ejemplo siguiente se muestra que se puede usar una variable de tipo System::Type para obtener los atributos de un tipo. También muestra que para algunos tipos, tendrá que crear una definición de tipos 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");
}

Resultados

True
in AtClass2 constructor
in AtClass Type ^ constructor
AtClass2
System.AttributeUsageAttribute
AtClass
int::typeid != pointer_to_int::typeid, as expected
int::typeid == handle_to_int::typeid, as expected

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft