Partager via


typeid (extensions du composant C++)

Obtient une valeur indiquant le type d'un objet.

Tous les runtimes

kwd9abya.collapse_all(fr-fr,VS.110).gifSyntaxe

T::typeid

kwd9abya.collapse_all(fr-fr,VS.110).gifParamètres

  • T
    Nom de type.

Windows Runtime

kwd9abya.collapse_all(fr-fr,VS.110).gifSyntaxe

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

kwd9abya.collapse_all(fr-fr,VS.110).gifParamètres

  • T
    Nom de type.

kwd9abya.collapse_all(fr-fr,VS.110).gifRemarques

Dans C++/CX, le typeid retourne un Platform::Type qui est construit à partir d'informations de type au moment de l'exécution.

kwd9abya.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /ZW

Common Language Runtime

Syntaxe

type::typeid

Paramètres

  • type
    Le nom d'un type (déclarateur abstrait) pour lequel vous souhaitez l'objet System::Type.

Remarques

typeid est utilisé pour obtenir le Type d'un type au moment de la compilation.

typeid est semblable à l'obtention du System::Type d'un type au moment de l'exécution à l'aide de GetType ou de GetType.Toutefois, typeid accepte un seul nom de type en tant que paramètre.Si vous voulez utiliser une instance de type pour obtenir son nom de System::Type, utilisez GetType.

typeid doit pouvoir évaluer un nom de type (type) au moment de la compilation, alors que GetType évalue le type à retourner au moment de l'exécution.

typeid peut prendre un nom de type natif ou un alias Common Language Runtime du nom de type natif ; consultez Équivalents .NET Framework des types natifs C++ (C++/CLI) pour plus d'informations.

typeid fonctionne également avec les types natifs, même s'il retournera toujours un System::Type.Pour obtenir une structure type_info, utilisez opérateur de typeid.

typeid succède à __typeof dans la syntaxe /clr précédente.

kwd9abya.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /clr

kwd9abya.collapse_all(fr-fr,VS.110).gifExemples

Exemple

L'exemple suivant compare le mot clé typeid au membre 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);
}

Sortie

  
  

Exemple

L'exemple suivant indique qu'une variable de type System::Type peut être utilisée pour obtenir les attributs d'un type.Il montre également que, pour certains types, vous devez créer un typedef pour utiliser 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");
}

Sortie

  
  
  
  
  
  
  
  

Voir aussi

Concepts

Extensions de composant pour les plateformes Runtime