Bonsoir! Désolé de vous déranger mais j'ai un petit soucis que je ne vois pas comment résoudre.
Je vais essayer d'être le plus clair possible!
VOilà j'ai une clase A et une classe B tel que :
class A
{
unsigned int _id;
bool _etat;
};
template<typename T>
class B : A
{
private : T * _donnee,
};
je voudrais stocker des éléments "B" dans un vector et si je ne me trompe pas cela n'est pas possbile car je ne connais pas par avance le type de T. Donc c'est pour ca que je passe pas une classe A dite de base pour stocker non plus des B mais des A.
Donc a un moment j'ai quelque chose du genre
std::vector(A *) vect;
B * b = new B();
vect((A *) b);
par contre et voila mon probleme a un autre moment je voudrais pourvoir récupere les éléments de vect comme des B<??> et plus des A.
Bien evidement si je fais
A * a = vect[i]; (ok et logique donc j'ai acces aux attributs _id et _etat)
par contre B * b = vect[i] ne marche que si je fais (ce qui est logique) B<int> * b =vect[i]; mais dans ce cas cela suppose que je connais tout les types que je stocke ce qui n'est pas le cas!
alors comment faire? j'ai bien essaye de faire un truc du genre :
B<typeid(*_vec[i]) >* b = vect[i];
mais ce ne compile pas! SI jamais quelqu un aurait une idée je lui serais tres tres reconnaissant (comme toujours)
D'avance merci
Julien