instanciation avec types dynamiques

instanciation avec types dynamiques - C++ - Programmation

Marsh Posté le 30-05-2005 à 11:56:31    

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 :
  1. template <class DataType>
  2. class Classe1<DataType *> {
  3. private:
  4.     DataType * m_Objet;
  5. public:
  6.     {...}
  7.     void addObjet (DataType * p_Objet) {
  8.          {...}
  9.          m_Objet = new DataType (*p_Objet); //On recopie l'objet passé en paramètre dans l'objet             
  10.          //membre par le constructeur de copie.
  11.     }
  12.     {...}
  13. };


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 :
  1. 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!
 

Reply

Marsh Posté le 30-05-2005 à 11:56:31   

Reply

Marsh Posté le 30-05-2005 à 11:59:26    

n'utilise pas typeid(*p_Objet).name();  
 
rajoute une méthode clone()
 
virtual Base* Base::clone() = 0;
virtual Derive* Derive::clone() { return new Derive(*this); }
 
(et tu peux faire ça avec une interface ICloneable<T> également)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed