Maison > développement back-end > C++ > Quand et pourquoi avez-vous besoin du mot-clé « typename » dans les modèles C ?

Quand et pourquoi avez-vous besoin du mot-clé « typename » dans les modèles C ?

Susan Sarandon
Libérer: 2024-12-19 03:46:11
original
260 Les gens l'ont consulté

When and Why Do You Need the

Syntaxe du mot-clé "typename"

Le mot-clé "typename" est utilisé en C pour faire référence à un nom imbriqué qui est un nom dépendant , ce qui signifie qu'il est imbriqué dans une instance de modèle avec un paramètre inconnu. Ce mot-clé spécifie explicitement que le nom représente un type, en particulier lorsque l'entité déduite (valeur, type ou modèle) est ambiguë.

Utilisation de « typename » dans les noms imbriqués

Considérez l'extrait de code suivant :

template<class K>
class C {
    struct P {};
    vector<P> vec;
    void f();
};

template<class K> 
void C<K>::f() {
    typename vector<P>::iterator p = vec.begin();
}
Copier après la connexion

Ici, le mot-clé "typename" est nécessaire pour déclarer p comme un type, à savoir un itérateur pour un vecteur de P structures. Sans "typename", le compilateur interpréterait le vecteur de séquence

::iterator comme une expression qui représente une valeur ou une fonction, ce qui serait incorrect.

Cas supplémentaires nécessitant "typename"

Outre les noms imbriqués, le mot-clé "typename" est également requis dans ce qui suit scénarios :

  • Lorsque vous faites référence au type d'un argument de modèle de modèle
  • Lors de la déclaration de la fonction membre d'une classe de modèle en tant qu'ami d'une autre classe de modèle
  • Lors de la spécification du type d'un pack de paramètres de modèle
  • Lors de la conversion d'un nom dépendant en un type spécifique

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal