Reconnaissance de types d'objets en C++

typeof() pour c++ ?

On vous l'a maintes fois répété : En C++, il n'est pas possible de connaître le type d'un objet durant l'execution...et bien non, c'est tout a fait possible ! moyennant la mise en oeuvre de RTTI (Run Time Type Information). Les puristes vous diront que le langage objet est fait pour se délester des problèmes de typage grâce aux fonctions virtuelles. Certes, mais une astuce reste une astuce et des fois ça peut nous sortir du pétrin donc autant en faire profiter !Le mécanisme de reconnaissance d'objet se réalise avec la classe type_info et l'opérateur typeid


exemple:

  1. #include
  2. #include
  3.  
  4. using namespace std;
  5.  
  6. class A
  7. {
  8.     public:
  9.      A(){}
  10.      virtual ~A(){};
  11. };
  12.  
  13. class B : public A
  14. {
  15. };
  16.  
  17. int main (int, char**)
  18. {
  19.     A a;
  20.     B b;
  21.  
  22.     cout "la classe A est de type : " typeid(A).name()
  23.     cout "a est de type : " typeid(a).name()
  24.     cout "b est de type : " typeid(b).name()
  25.  
  26.     A a2;
  27.  
  28.     cout "type[a2] == type[a] ? " typeid(a) == typeid(a2))
  29.     cout "type[a2] == type[b] ? " typeid(a) == typeid(b))
  30.  
  31.     A * pa = new A;
  32.     A * pb = new B;
  33.  
  34.     cout "pa est de type : " typeid(*pa).name()
  35.     cout "pb est de type : " typeid(*pb).name()
  36.  
  37.  
  38. }
  39.  
  40. ----------------------------------------------------------
  41. la classe A est de type : class A
  42. a est de type : class A
  43. b est de type : class B
  44. type[a2] == type[a] ? 1
  45. type[a2] == type[b] ? 0
  46. pa est de type : class A
  47. pb est de type : class B
  48. ----------------------------------------------------------

Vous remarquerez que la fonction name() renvoie le nom de la class préfixée par le mot class.
N'oubliez pas d'activer enable RunTime Type Info dans Visual Studio (option de compilation /GR) .

Paru aussi sur cppfrance

Publié mercredi 18 janvier 2006 09:23 par Poppyto
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires


Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01