Bonjour a tous,
L'intitulé n'est pas tres clair mais voici ma question.
J'ai une classe Objet dont hérite Objet1 Objet2 Objet3 etc..
J'ai une map d'Objet* qui me permet de stocker mes differents Objet[1-2-3]
Quand je veux utiliser cette map je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::map<std::string, Objet*>
Et pour copier ma map je pense faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Object * pObj = getObjInMap( "MaCle" ); if( dynamic_cast<Objet1*>(pObj) ) { } else if( dynamic_cast<Objet2*>(pObj) ) { } else if( dynamic_cast<Objet3*>(pObj) ) { }
Mais je trouve pas ça super dans le sens ou chaque objet qui herite de Objet je devrais rajouter des entrees dans toutes ces methodes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 std::map<std::string, Objet*>const_iterator it; for(it = mMaMap.begin(); it!=mMaMap.end(); it++) { if( dynamic_cast<Objet1*>(it->second) ) { Objet1 * pObj = new Objet1(it->second); } else if( dynamic_cast<Objet2*>(it->second) ) { Objet2 * pObj = new Objet2(it->second); } else if( dynamic_cast<Objet3*>(it->second) ) { Objet3 * pObj = new Objet3(it->second); } /* Copie de l'objet cree dans la nouvelle map */ }
Est ce vraiment comme ça qu'il faut faire ou bien y a t il une autre maniere ?
Merci d'avance
Partager