Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Získá hodnotu, která označuje typ objektu.
Poznámka:
Toto téma se týká verze typeid rozšíření komponent C++. Informace o verzi ISO C++ tohoto klíčového slova naleznete v části typeid – operátor.
Všechny moduly runtime
Syntaxe
T::typeid
Parametry
T
Název typu.
prostředí Windows Runtime
Syntaxe
Platform::Type^ type = T::typeid;
Parametry
T
Název typu.
Poznámky
V C++/CX vrátí typeid Platform::Type vytvořený z informací o typu modulu runtime.
Požadavky
Možnost kompilátoru: /ZW
CLR (Common Language Runtime)
Syntaxe
System::Type^ type = T::typeid;
Parametry
typ
Název typu (abstraktní deklarátor), pro který chcete objekt použít System::Type .
Poznámky
typeid slouží k získání Type typu v době kompilace.
typeid se podobá získání System::Type typu za běhu pomocí GetType nebo GetType.
typeid Jako parametr však přijímá pouze název typu. Pokud chcete k získání názvu System::Type použít instanci typu, použijte GetType.
typeid musí být schopen vyhodnotit název typu (typ) v době kompilace, zatímco GetType vyhodnotí typ, který se má vrátit za běhu.
typeidmůže pro název nativního typu použít název nativního typu nebo alias modulu CLR (Common Language Runtime). Další informace najdete v tématu .NET Framework Ekvivalenty nativních typů C++ (C++/CLI).
typeid také funguje s nativními typy, i když bude stále vracet System::Type. Pokud chcete získat strukturu type_info, použijte typeid operátor.
Požadavky
Možnost kompilátoru: /clr
Příklady
Následující příklad porovnává klíčové slovo typeid se GetType() členem.
// 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*
Následující ukázka ukazuje, že proměnná typu System::Type se dá použít k získání atributů typu. Ukazuje také, že u některých typů budete muset vytvořit typedef, který se má použít 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