// ERREUR
Contenu<int>& c =
static_cast<Contenu<int> >(mon_conteneur.get(0));
return 1;
}
Bien sûr, ça ne marche pas puisque je ne peux retrouver le type
d'origine. Je vois comment faire avec une alternative "dynamique",
mais en statique, je ne vois pas.
Le Wed, 10 Dec 2003 10:43:18 +0100, Frédéric Mayot a écrit :
Bonjour,
Soit une classe template Contenu :
template <typename T> class Contenu {T t;};
Je cherche à réaliser une classe Conteneur pour des objets Contenu avec des paramètres de template différents.
quelqu'un a conseillé boost::any<> ? www.boost.org
Loïc Joly
Marc Boyer wrote:
Frédéric Mayot wrote:
Bien sûr, ça ne marche pas puisque je ne peux retrouver le type d'origine. Je vois comment faire avec une alternative "dynamique", mais en statique, je ne vois pas.
Disons qu'il y a à mon humble avis un problème de conception. C++ est un système à typage statique, qui offre un certain polymorphisme dynamique à travers des références ou des pointeurs uniquement.
Vouloir mettre dans un conteneur STL des données de type différent sans utiliser de pointeur ou de référence, c'est comme vouloir planter une vis avec un clou. On doit pouvoir y arriver, mais à quel prix, et en se tapant souvent sur les doigts avant d'y arriver.
Oui, c'est encore plus difficile que si on avait un marteau, et puis, ou doit avoir moins de force aussi... ;)
Au fait, pourquoi ne pas faire un conteneur avec des références ? Le coût de l'indirection serait vraiment prohibitif ?
Parce qu'une référence n'est pas un candandidat admissible pour un conteneur STL ?
-- Loïc
Marc Boyer wrote:
Frédéric Mayot wrote:
Bien sûr, ça ne marche pas puisque je ne peux retrouver le type
d'origine. Je vois comment faire avec une alternative "dynamique",
mais en statique, je ne vois pas.
Disons qu'il y a à mon humble avis un problème de
conception. C++ est un système à typage statique, qui
offre un certain polymorphisme dynamique à travers
des références ou des pointeurs uniquement.
Vouloir mettre dans un conteneur STL des données
de type différent sans utiliser de pointeur ou
de référence, c'est comme vouloir planter une vis
avec un clou. On doit pouvoir y arriver, mais à quel
prix, et en se tapant souvent sur les doigts avant
d'y arriver.
Oui, c'est encore plus difficile que si on avait un marteau, et puis, ou
doit avoir moins de force aussi... ;)
Au fait, pourquoi ne pas faire un conteneur avec
des références ? Le coût de l'indirection serait
vraiment prohibitif ?
Parce qu'une référence n'est pas un candandidat admissible pour un
conteneur STL ?
Bien sûr, ça ne marche pas puisque je ne peux retrouver le type d'origine. Je vois comment faire avec une alternative "dynamique", mais en statique, je ne vois pas.
Disons qu'il y a à mon humble avis un problème de conception. C++ est un système à typage statique, qui offre un certain polymorphisme dynamique à travers des références ou des pointeurs uniquement.
Vouloir mettre dans un conteneur STL des données de type différent sans utiliser de pointeur ou de référence, c'est comme vouloir planter une vis avec un clou. On doit pouvoir y arriver, mais à quel prix, et en se tapant souvent sur les doigts avant d'y arriver.
Oui, c'est encore plus difficile que si on avait un marteau, et puis, ou doit avoir moins de force aussi... ;)
Au fait, pourquoi ne pas faire un conteneur avec des références ? Le coût de l'indirection serait vraiment prohibitif ?
Parce qu'une référence n'est pas un candandidat admissible pour un conteneur STL ?