Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Egy objektum típusát jelző értéket kap.
Megjegyzés:
Ez a témakör a typeid C++ component Extensions verziójára vonatkozik. A kulcsszó ISO C++ verziójához lásd a typeid operátort.
Minden futtatókörnyezet
Szemantika
T::typeid
Paraméterek
T
Típusnév.
Windows futtatókörnyezet
Szemantika
Platform::Type^ type = T::typeid;
Paraméterek
T
Típusnév.
Megjegyzések
A C++/CX fájlban a typeid egy platform::Futtatókörnyezet típusadataiból létrehozott típust ad vissza.
Követelmények
Fordítási lehetőség: /ZW
Common Language Runtime (Közös Nyelvi Futásidő)
Szemantika
System::Type^ type = T::typeid;
Paraméterek
típus
Annak a típusnak (absztrakt deklarátornak) a neve, amelyhez az objektumot System::Type használni szeretné.
Megjegyzések
typeid egy típus fordítási időpontban történő lekérésére Type szolgál.
typeid hasonló ahhoz, mint amikor futtatáskor System::Type egy típust használ GetType vagy GetType. Azonban typeid csak egy típusnevet fogad el paraméterként. Ha egy típuspéldányt szeretne használni a nevének lekéréséhez System::Type , használja a következőt GetType: .
typeid A típusnévnek (típusnak) a fordítás időpontjában kell tudnia kiértékelni, míg a GetType kiértékeli a típust, hogy futásidőben térjen vissza.
typeida natív típusnévhez használhat natív típusnevet vagy közös nyelvi futtatókörnyezeti aliast; További információ: .NET Framework Equivalents to C++ Native Types (C++/CLI).
typeid natív típusokkal is működik, bár továbbra is visszaad egy System::Type. Egy type_info szerkezet lekéréséhez használja az Operátorttypeid.
Követelmények
Fordítási lehetőség: /clr
Példák
Az alábbi példa a typeid kulcsszót hasonlítja össze a GetType() taghoz.
// 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*
Az alábbi minta azt mutatja, hogy egy Rendszer típusú változó::Típus használatával lekérhetők az attribútumok egy típuson. Azt is megmutatja, hogy bizonyos típusok esetén létre kell hoznia egy typedef-et 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