Déclaration de structure/classe modèle en tant qu'ami
En programmation C, on peut rencontrer des scénarios dans lesquels déclarer une structure ou une classe modèle en tant qu'ami est voulu. Cependant, lorsque vous essayez l'approche courante ci-dessous, certains compilateurs, tels que Visual C 8 (VC8), génèrent des erreurs :
template <typename T> struct foo { template <typename S> friend struct foo<S>; };
La raison derrière cette erreur est l'incapacité du compilateur à gérer plusieurs listes de paramètres de modèle dans un une seule ligne. Pour surmonter cet obstacle, une syntaxe alternative est introduite :
template <typename> friend class foo;
En spécifiant une liste de paramètres de modèle vide, la déclaration d'ami s'applique désormais à toutes les instanciations potentielles de la structure ou de la classe basée sur un modèle. Cependant, il convient de noter que cette approche rend tous les modèles amis les uns avec les autres. Par exemple, foo
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!