J'ai lu à propos des typologies dans 'Modern C++ Design' et je l'ai compris comme une sorte d'union pour les types. En mettant différents types non liés dans une typelist, on peut l'utiliser pour représenter plus d'un type à la fois, sans héritage. J'ai testé typelist dans certaines fonctions simples avec des types primitifs, mais je ne pouvais pas obtenir l'un d'eux pour fonctionner.Comment utiliser les typelists
Est-ce que quelqu'un pourrait me dire si mon compte de typelists est juste et donner un exemple simple et concret comment employer des typelists dans le code moyen journalier? Merci d'avance. Au fait, j'utilise Windows et Visual Studio 2005 et son compilateur.
EDIT: mes exemples sont partis, j'utilise un projet sandbox en vs pour tester ces choses. Mais il était calme semblable au code dans le tutoriel Dobbs:
void SomeOperation(DocumentItem* p)
{
if (TextArea* pTextArea = dynamic_cast<TextArea*>(p))
{
... operate on a TextArea object ...
}
else if (VectorGraphics* pVectorGraphics =
dynamic_cast<VectorGraphics*>(p))
{
... operate on a VectorGraphics object ...
}
else if (Bitmap* pBitmap = dynamic_cast<Bitmap*>(p))
{
... operate on a Bitmap object ...
}
else
{
throw "Unknown type passed";
}
}
Cela fonctionne, mais je ne vois pas l'avantage sur l'héritage qui est capable de faire la même chose. Et la distribution dynamique ne fonctionne pas sur les types primitifs. Est-il possible de l'utiliser comme une valeur de retour comme:
typedef Typelist<int, string> mylist
mylist myfunction() {
if(foo == bar)
return 5;
return "five";
}
Ajoutez un exemple de code qui n'a pas fonctionné à votre question. –