Déjà en faisant ça, je m'apercois qu'il passe deux fois par le constructeur de CClass1... Ce qui voudrait dire que le "Add" duplique mon objet que j'ai créé la ligne d'au dessus?
Il est probable que c'est une copie qui est stockée, sinon, on ne pourrait pas mettre dans le tableau des objets construits comme objets locaux ou comme objets temporaires. Dans ce cas, si le tableau est déclaré comme tableau de CClass1 , seule la "partie" CClass1 de l'objet peut être copiée puisque le CArray ne peut pas savoir le type complet de l'objet.
Comment faire sans modifier mon CArray?
Je ne sais pas. La solution consisterait à stocker dans le tableau un pointeur sur la classe de base ce qui préserverait le polymorphisme à condition d'allouer les objets dynamiquement (ce qui est le cas de l'exemple)
Partager