Bonjour à tous!
J'ai un problème que même une longue recherche sur google ne m'a pas permis de résoudre...
voici mon problème :
j'ai une classe template que j'ai spécialisée pour les pointeurs, et qui ressemble à ca :
Code :
- template <class DataType>
- class Classe1<DataType *> {
- private:
- DataType * m_Objet;
- public:
- {...}
- void addObjet (DataType * p_Objet) {
- {...}
- m_Objet = new DataType (*p_Objet); //On recopie l'objet passé en paramètre dans l'objet
- //membre par le constructeur de copie.
- }
- {...}
- };
|
ceci marche très bien tant que mes objets ne font pas appel au polymorphisme.
mais ce que je voudrais, c'est que ceci marche même en passant en paramètre un pointeur vers un descendant du type DataType (celui mis en paramètre template), mais pour cela il faut que le new se fasse avec le type réel de l'objet pointé par le paramètre, que j'arrive à récupérer par
Code :
- typeid(*p_Objet).name();
|
quelqu'un saurait-il comment, à partir du nom du type (ou par un autre moyen), faire que le new se fasse avec comme type non pas DataType mais le type de l'objet pointé par le paramètre?
merci d'avance!