Comment combiner des modèles avec des enums en C++?

Il y a une énorme compilation en C++ langage de programmation qui offre un contrôle strict sur les types de données. Souvent on aurait moule son code avec un système de template pour atteindre la plupart des fonctionnalités adéquates tout en garantissant à l'intérieur de ce type correct de la préservation et de la flexibilité dans sa manipulation. Moins fréquemment, les énumérations sont utilisés à cette fin, puisqu'ils ont permis de définir explicitement les possibilités pour les données et n'ont aucun moyen direct pour vérifier l'exactitude des types.

Donc ce que nous avons sont des modèles qui permettent de fonctions et de classes pour fonctionner avec les types génériques sans être réécrit pour chacun; et les énumérations, en fournissant un droit d'utilisation de la types.

Est-il possible de définir une restriction de modèle de l'architecture d'une classe à l'aide d'un enum comme un modèle? Comment un templatized utilisation d'une méthode de enumed type et quand il pourrait être utile?

Ma dernière question est: comment faire pour lier les modèles et l'énumération des types et de les utiliser ensemble dans le résumé des données de conception?

Comme un exemple, supposons que vous essayez de créer un conteneur de données, vous vous attendez à avoir des types définis dans un enum au sein de votre classe:

template <typename T>
class element
{
public:
  enum type { text_type, widget_type, image_type };

  ...
private:
  type node_type;

};

Vous aussi défini chacun des types présents dans class element:

class text;
class widget;
class image;

Créer un élément, vous souhaitez spécifier son type de contenu (texte, widget ou l'image), de sorte que vous passer en argument de modèle.

if (node_type == text_type) do_something();

En Java vous avez List<? extends T> qui, implicitement, dit ce type de cours peut être utilisé comme paramètre de modèle. Peut-il être fait en C++ en utilisant les énumérations? Comment travailler avec enumed types de déclarations?

Question: je voudrais savoir comment faire pour limiter le comportement de modèles par enumed types pour s'assurer que seuls ceux-ci sont utilisés, et d'orienter le code d'utilisation traditionnelle de la façon de travailler avec les enums.

Qu'entendez-vous par "Est-il possible de définir une restriction de modèle de l'architecture d'une classe à l'aide d'un enum comme un modèle?"?
Est enum comportement en question en cascade de Java utilisation ?
vous devez préciser votre question. Comme posté c'est bien trop vague. Essayez de poster un peu de code pour montrer ce que vous essayez de faire
S'il vous plaît ajouter un potentiel de cas d'utilisation (en pseudo-code) de votre question.
Parlez-vous un équivalent à la Java List<? extends T> génériques paradigme?

OriginalL'auteur Rizo | 2010-10-19