Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Obtiene un valor que indica el tipo de un objeto.
Nota:
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, consulte typeid (Operador).
Todos los runtimes
Sintaxis
T::typeid
Parámetros
T
Nombre de tipo.
Windows en tiempo de ejecución
Sintaxis
Platform::Type^ type = T::typeid;
Parámetros
T
Nombre de tipo.
Comentarios
En C++/CX, typeid devuelve una clase Platform::Type que se construye a partir de la información de tipo de runtime.
Requisitos
Opción del compilador: /ZW
Entorno de ejecución de lenguaje común
Sintaxis
System::Type^ type = T::typeid;
Parámetros
tipo
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 quiere usar una instancia de un tipo para obtener el nombre de System::Type, 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; consulte el artículo sobre los 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 el operador typeid.
Requisitos
Opción del compilador: /clr
Ejemplos
En el siguiente ejemplo se 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);
}
typeid and GetType returned the same System::Type
G
System.Single*
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");
}
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