begin process at 2010 02 10 11:05:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

déterminer dynamiquement le type d'un objet pointé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

déterminer dynamiquement le type d'un objet pointé

dimanche 19 juin 2005 à 17:39:39 | déterminer dynamiquement le type d'un objet pointé

feanor11

Sachant qu'un pointeur est capable de pointer sur un objet d'un type dérivé à son type respectif (si A est dérivée de B, A* peut pointer sur un objet de type B).
Est-il possible alors de déterminter dynamiquement le type réel de l'objet pointé ? (de l'obtenir sous forme type_info)
De telle sorte que si l'objet pointé est en réalité de type dérivé du type du pointeur, on puisse obtenir son vrai type et non pas le type du pointeur
dimanche 19 juin 2005 à 17:58:07 | Re : déterminer dynamiquement le type d'un objet pointé

vecchio56

Administrateur CodeS-SourceS
typeid logiquement, mais je n'arrive pas à l'utiliser: l'exemple suivant m'affiche class A:

#include <iostream>

using namespace std;

class A{};
class B: public A{};

int main()
{
  A* obj = new B();
  cout << typeid(*obj).name() << endl;
}


Tu peux aussi essayer un dynamic_cast, pour regarder si un objet et d'un certain type ou pas

dimanche 19 juin 2005 à 17:59:41 | Re : déterminer dynamiquement le type d'un objet pointé

vecchio56

Administrateur CodeS-SourceS
Le principe c'est quand même que tu n'a jamais besoin de faire ca, puisque tu peux utiliser les fonction virtuelles
dimanche 19 juin 2005 à 18:20:22 | Re : déterminer dynamiquement le type d'un objet pointé

xboxut

hehe pas dur tu assigne une var de reconnaissance ;)

exemple:

class a
{
public:
char classID;
a();
}

dans ton constructeur tu assigne une valeur a  classID.
kan tu cree une classe derivée tu met dans son constructeur une valeur de classID differente comme ca chaque type d objet aura une variable differente.
apres pour determiner le type d objet bin tu test la var classID
C est une bonne methode mais il parait que c crade ;)
dimanche 19 juin 2005 à 18:37:54 | Re : déterminer dynamiquement le type d'un objet pointé

cosmobob

salut,
vecchio56
> ton exemple ne marche pas car ta classe ne contient aucune fonction virtuelle (et pas de table de fonction virtuelle et de typage dynamique sans ca ...)

#include <iostream>

using namespace std;

class A{
public:
   virtual ~A() {};
};
class B: public A{};

int main()
{
  A* obj = new B();
  cout << typeid(*obj).name() << endl;
}

il s'affiche class B.

a+
dimanche 19 juin 2005 à 18:46:07 | Re : déterminer dynamiquement le type d'un objet pointé

vecchio56

Administrateur CodeS-SourceS
Ah oui cosmobob, on me l'a deja dit la dernière fois. Cette fois j'essaie de ne pas oublier ;)


Cette discussion est classée dans : type, objet, pointeur, dynamiquement, pointé


Répondre à ce message

Sujets en rapport avec ce message

problème de pointeur et d'objet pointé [ par leptit ] Bonjour, Je vous présente le problème en C:struct assoc { int l, *n ; }*n est un pointeur vers une alloc dynamique de memoirestyle tableau d'entier.Je test du pointeur [ par jeltimed ] bonjour .en fait je suis débutant en c++ et je voulais juste savoir est ce que ya moyen d'appliquer la logique suivant en c++: si pointeur pointe determiner le type d'un objet et réutiliser ce type [ par feanor11 ] Soit un objet O, dont on ne connait pas le type. On peut déterminer son type à l'aide de la fonction typeid(), retournant un objet de type type_info. supprimer objet de type BITMAP [ par tdeco ] SalutJ'utilise un objet de type BITMAP que je cré à partir d'un buffer et que j'affiche par la suite.Il y a t-il un moyen de supprimer cet objet après Question simple, STL c++, ( indexation d'objet ) [ par Wiiip ] Bonjour, merci, Je suppose que ce n'est pas bien compliqué, et que l'on doit pouvoir faire cela facilement avec la stl. Je cherche à faire un index po Classe liste chaînée générique [ par marik7335 ] Salut à tous,   Je souhaite gérer un parc de véhicules contenant des motos et des voitures. Pour se faire, j'ai donc implémenter trois classes : une Mettre une adresse dans un pointeur [ par pepsidrinker ] Bonjour!vous trouverez sans doute ma question stupide,mais jaimerai avoirun moyen pour mettre une adresse voulus dans un pointeur.exemple :long* a;a = Assigner un évènement à un objet créé dynamiquement [ par marcootz ] Bonjour, Dans mon programme en borland C++, je créer un TChart dynamiquement en faisant un <pre class="alt2" dir="ltr" style="border: 1px inset ; marg une classe static [ par Adeon ] bonjour a tous!je suis sur le developpement d'un jeux.certaine classe ne contienne qu'un seul objet comme par exemple la classe Interface, ou encore l Objet et pointeur, souci [ par TuxOnline ] Bonjour j'ai un petit souci pour l'envoie de l'adresse d'un pointeur.Voila j'ai donc une classe CMAnifestation. Dans cette classe se trouve un objet v


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales