Recuperer le type d'un template

juju0169 Messages postés 15 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 avril 2008 - 28 avril 2008 à 22:32
juju0169 Messages postés 15 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 avril 2008 - 28 avril 2008 à 23:27
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 * bvect[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

2 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 avril 2008 à 23:18
Le template c'est figé à la compilation, donc évidemment "B<typeid(*_vec[i]) >" ca ne peut pas marcher.
La solution à ton pb est simple: il n'y en a pas.

Le vrai pb c'est : pourquoi as tu besoin de faire ca ?
0
juju0169 Messages postés 15 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 avril 2008
28 avril 2008 à 23:27
Houla bonne question mais comment il repondre simplement?

en fait voila ca fait parti de tout un projet et je me vois mal vous l'expiquer en quelque lignes et faire tout le detail me semble un peu penible aussi bien pour vous que pour moi :)

Bon donc merci d'avoir répondu le problème c'est que maintenant il faut que je trouve comment faire autrement

mais bon je vois vraiment pas comment faire! BOn j'espere que j'y verrais plus clair demain!

encore merci et bonne soirée
0