Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : déterminer dynamiquement le type d'un objet pointé [ Archives / Au secours ] (feanor11)

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é 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...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.