Affectation objet type de base
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]
Code:
1 2
|
std::map<std::string, Objet*> |
Quand je veux utiliser cette map je fais:
Code:
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) )
{
} |
Et pour copier ma map je pense faire:
Code:
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
*/
} |
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.
Est ce vraiment comme ça qu'il faut faire ou bien y a t il une autre maniere ?
Merci d'avance