Conteneur d'objets enfants
Bonjour !
J'ai besoin d'un conteneur (de préférence associatif (std::map, ...)) permettant de stocker des objets héritant tous d'une même classe tout en conservant les données des objets enfants dans le but de faire quelque chose comme ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <map>
#include <string>
class Parent
{
public:
Parent();
void FonctionParent();
};
class Enfant : public Parent
{
public:
Enfant();
void FonctionEnfant();
};
class structure
{
public:
void AjouterObjet(std::string nom, Parent objet)
{
m_Objets[nom] = objet;
}
Parent RecupObjet(std::string nom)
{
return m_Objets[nom];
}
private:
std::map < std::string, Parent> m_Objets;
};
int main()
{
structure a;
Enfant enfant1, enfant2;
a.AjouterObjet("enfant", enfant1);
enfant2 = a.RecupObjet("enfant");
enfant2.FonctionParent();
enfant2.FonctionEnfant();
return 0;
} |
Malheuresement, ce code ne fonctionne pas... :calim2:
J'ai essayer avec des template mais sans succés
Y aurait il donc un moyen de réaliser ceci ?
Aussi, est ce que ce genre de manipulation d'objet s'appellent le "downcasting" ?
Merci