Bonjour,
Je voudrais stocker une liste d'arguments dans une std::list mais le problème c'est que je ne sais pas comment m'y prendre pour faire en sorte de pouvoir mettre des arguments de types différents, tout en étant capable ensuite, au moment où j'utiliserais la liste, de connaitre le type des différents éléments stockés.
J'ai pensé aux templates mais le problème c'est que je ne peux avoir qu'une liste de données du même type. J'ai également pensé à un truc dans ce style :
class A {}
template<typename T> class B : public A { T m_Data; }
et ensuite créer une liste de A* :
std::list<A*> listA;
... ce qui pourrait convenir pour stocker les données dans ce style :
B<int> * pb = new B<int>;
listA.push_back(pb);
.. mais le problème c'est qu'ensuite je ne pourrais plus récupérer les données correctement, à moins de connaitre explicitement leur type (ce qui n'est pas le cas évidemment, puisque ça change à chaque exécution).
Si quelqu'un a une solution (qui m'éviterais de devoir stocker explicitement le type de chaque donnée et ensuite de faire des tests du genre if (nType == 1) alors c'est un int, 2 c'est un float, 3 c'est une string etc...), je suis preneur.
Merci d'avance
Partager