Hello,

Je me tape du "legacy code". La conception générale me semble à revoir, mais bon, comme d'hab, pas le temps.

J'ai, pour simplifier, l'héritage suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class A
{
    std::vect<A*> myVect;
}
 
class B : public A
{
}
A noter que dans ce vecteur, je ne peux jamais avoir à la fois des pointeurs vers A et des pointeurs vers B. Le problème est qu'actuellement, quand je travaille avec des B, le code existant fait du dynamic_cast à tire-larigot quand il extrait les éléments du vecteur.

J'ai pensé à utiliser une technique à la CRTP, mais cela impliquerait d'instancier des A<A> et des B<B>, et ce n'est pas non plus très satisfaisant, même si je pourrais mettre des types par défaut, et que cela apparaîtrait transparent.

Que me conseillez-vous ? Je ne peux pas faire de trop grosses modifs (temps).

Merci.